我正在尝试阅读如下文件:
FileInputStream fileInputStream = new FileInputStream("/com/test/Test.xml");
我总是得到文件未找到异常。我怎样才能使它工作?输入流是否采用相对路径?
答案 0 :(得分:7)
是的,这可以采取相对路径。
为什么你的表达不起作用?非常简单:您的路径/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")
答案 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(".")