我正在尝试读取一个文件,例如:
FileInputStream fileInputStream = new FileInputStream("/com/test/Test.xml");
我一直遇到文件未找到的异常。如何让它正常工作?输入流会采用相对路径吗?
/com/test/Test.xml
是绝对路径,因为它以/
开头,所以你实际上是在寻找从根目录开始位于/com/test/
目录中的文件。./com/test/Test.xml
或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(".")
的路径来检查当前目录。