FileInputStream使用包路径

时间:2012-05-22 07:00:19

标签: java file-io

我正在尝试阅读如下文件:

FileInputStream fileInputStream = new FileInputStream("/com/test/Test.xml");

我总是得到文件未找到异常。我怎样才能使它工作?输入流是否采用相对路径?

4 个答案:

答案 0 :(得分:7)

是的,这可以采取相对路径。

为什么你的表达不起作用?非常简单:您的路径/com/test/Test.xml是绝对的,因为它以/开头,因此您实际上是从根目录开始查找位于/com/test/目录中的文件。

如何解决问题?

我相信您正在尝试查找位于您项目下的文件。因此,您可以使用./com/test/Test.xmlcom/test/Test.xml之类的相对路径。这可能会有所帮助。可能是因为我不知道您当前的工作目录和文件结构是什么。当前目录是您运行java时所在的目录。如果从IDE运行,通常工作目录是项目目录。

在这种情况下,我认为路径./com/test/Test.xml无效,因为文件Test.xml不是直接位于项目根目录下,而是位于./src/resources/com/test左右的某个位置。

在这种情况下,您可能不希望将文件作为文件读取,而是作为资源(位于类路径中)读取。在这种情况下使用

getClass().getResourceAsStream("/com/test/Test.xml")

答案 1 :(得分:3)

尝试使用

class.getResourceAsStream(path)。在这种情况下,path必须相对于包含调用此语句的类的文件夹。

InputStream in = getClass().getResourceAsStream("/com/test/Test.xml");

答案 2 :(得分:0)

试试这个,

String str = "Test.xml";
  File file = new File(str);
  String absolutePathOfFirstFile = file.getAbsolutePath();
  FileInputStream fileInputStream = new FileInputStream(absolutePathOfFirstFile);

答案 3 :(得分:0)

您的路径必须不正确。您可以使用System.getProperty("user.dir");或打印new File(".")

的路径来检查当前目录