读取JAR文件外部的属性文件-java 8无法识别文件

读取JAR文件外部的属性文件-java 8无法识别文件,java,path,java-8,filepath,Java,Path,Java 8,Filepath,复制了与以下示例程序相同的场景 我正在尝试读取位于我的classes文件夹外的文件Test.txt。我正在使用getResourceAsStream方法来定位文件,但它无法识别。只要我的文件在它可以识别的classes文件夹中 InputStream propFileInpStream = LocateFile.class.getResourceAsStream("../../../"+PROP_FILE); 无法识别是否在“类”文件夹之外 识别类文件夹结构中的任意位置 LocateFile

复制了与以下示例程序相同的场景

我正在尝试读取位于我的classes文件夹外的文件
Test.txt
。我正在使用
getResourceAsStream
方法来定位文件,但它无法识别。只要我的文件在它可以识别的classes文件夹中

InputStream propFileInpStream = LocateFile.class.getResourceAsStream("../../../"+PROP_FILE);
无法识别是否在“类”文件夹之外

识别类文件夹结构中的任意位置


LocateFile.class.getResourceAsStream
将在类路径中查找该文件


如果您需要访问类路径以外的文件,则可以将该文件的位置添加到类路径,或者使用绝对路径并使用来自的建议。

这是正常的,也是完全需要的

尝试查找具有给定名称的资源,而不是任意文件。资源是应用程序类路径中存在的文件。如果该文件不在类路径中,则不能使用该方法从中检索
InputStream

您可以在以下帮助下使用:

打开一个文件,返回要从该文件读取的输入流

此方法将打开一个文件(而不是资源)进行读取。您可以使用静态工厂获得一个
路径
实例。您可以指定文件的绝对路径,也可以指定与jar文件位置相关的路径

示例代码:

try (InputStream propFileInpStream = Files.newInputStream(Paths.get(path))) {
    // do something with the input stream
}

对于类路径之外的事情,您需要以不同的方式进行处理。您可能希望询问JVM类的字节码物理存储在哪里,然后从那里导航到所需的文件。请注意,当类文件存储在jar中时,其工作方式有所不同

发件人:(旧链接)


谢谢大家的帮助,我刚换了线

InputStream propFileInpStream = LocateFile.class.getResourceAsStream("..\\\\"+PROP_FILE);
进行以下更改:

InputStream propFileInpStream = new FileInputStream("..\\\\"+PROP_FILE);
InputStream propFileInpStream = new FileInputStream("..\\\\"+PROP_FILE);