我正在尝试读取如下文件:
FileInputStream fileInputStream = new FileInputStream("/com/test/Test.xml");
我总是收到未找到文件的异常。我怎样才能让它工作?输入流是否采用相对路径?
是的,这可以采取相对路径。
为什么你的表达不起作用?非常简单:您的路径/com/test/Test.xml
是绝对的,因为它以 开头/
,因此您实际上是在寻找位于/com/test/
从根目录开始的目录中的文件。
如何解决问题?
我相信您正在尝试查找位于您的项目下的文件。因此,您可以使用相对路径,例如./com/test/Test.xml
or com/test/Test.xml
。这可能会有所帮助。可能是因为我不知道您当前的工作目录和文件结构是什么。您的当前目录是您在运行时所在的位置java
。如果您从 IDE 运行,则工作目录通常是您的项目目录。
在这种情况下,我认为路径./com/test/Test.xml
是无效的,因为文件Test.xml
不是直接位于项目根目录下,而是位于某处./src/resources/com/test
左右。
在这种情况下,您可能不想将文件作为文件读取,而是作为资源(位于类路径中)读取。在这种情况下使用
getClass().getResourceAsStream("/com/test/Test.xml")
尝试使用
class.getResourceAsStream(path)。在这种情况下,路径必须相对于包含调用此语句的类的文件夹。
InputStream in = getClass().getResourceAsStream("/com/test/Test.xml");
试试这个,
String str = "Test.xml";
File file = new File(str);
String absolutePathOfFirstFile = file.getAbsolutePath();
FileInputStream fileInputStream = new FileInputStream(absolutePathOfFirstFile);
你的路径一定不正确。System.getProperty("user.dir");
您可以通过使用或打印路径来检查当前目录new File(".")