4

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

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

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

4

4 回答 4

7

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

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

如何解决问题?

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

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

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

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

于 2012-05-22T07:11:00.783 回答
4

尝试使用

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

InputStream in = getClass().getResourceAsStream("/com/test/Test.xml");
于 2012-05-22T07:04:17.290 回答
0

试试这个,

String str = "Test.xml";
  File file = new File(str);
  String absolutePathOfFirstFile = file.getAbsolutePath();
  FileInputStream fileInputStream = new FileInputStream(absolutePathOfFirstFile);
于 2012-05-22T07:08:01.700 回答
0

你的路径一定不正确。System.getProperty("user.dir");您可以通过使用或打印路径来检查当前目录new File(".")

于 2012-05-22T07:09:12.203 回答