【发布时间】:2018-01-10 00:17:31
【问题描述】:
C:/Data.zip/text.jar/a.xml 是a.xml 的位置,所以当我像这样使用它时
FileInputStream fis = new FileInputStram("C:/Data.zip/text.jar/a.xml");
它给了我 FileNotFoundException,当我使用 FileInputStream("/a.xml") 时也会抛出相同的 FileNotFoundException。
【问题讨论】:
-
您的问题不清楚。输入流旨在从源读取数据,而不是写入它们。你能澄清一下你想在这里实现什么吗?
-
是的,正确的。我的意思是如何获取 FileInputStrem("fileLocation"); 的文件位置
-
请注意,您不能简单地访问 存档中的文件,因为存档不是文件夹,它是遵循某种算法的单个文件描述了如何将多个文件写入一个文件。就像如果您有一个文本文件并将其他文件的所有内容写入其中,那么最后您也只有一个文件而不是文件夹。因此,为了访问内容,您需要再次使用解包存档的算法。 Java 库中有一些解决方案可以自动为您执行此操作,例如 @albert_nil 的答案中所见。
-
所以底线是:对于您的操作系统(以及任何类型的常规
FIle方法或Path构建),只需像zip(或jar)这样的存档看起来像一个普通的单个文件。如果不解释文件并使用解包算法,它就无法查看内部。这就是为什么你目前的方法行不通的原因(只要他们不添加一些自动完成所有这些事情的魔法)。