Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从bin读取输入文件_Java_File_Properties_Filenotfoundexception - Fatal编程技术网

Java 无法从bin读取输入文件

Java 无法从bin读取输入文件,java,file,properties,filenotfoundexception,Java,File,Properties,Filenotfoundexception,呃,伙计们,我写了一些代码来读取Java中的一个简单输入文件,一切都很好,但是在代码签入后,当其他人尝试运行它时,他们的二进制文件找不到该文件(即使该文件就在他们的bin文件夹中) 因此,在我的工作区中,我有以下结构和文件: com.test.test.java com.common.Utility.java com.common.PackageRFCs.properties 在我的test.java中,我试图以以下方式读取属性文件: Class<com.common.Utility&g

呃,伙计们,我写了一些代码来读取Java中的一个简单输入文件,一切都很好,但是在代码签入后,当其他人尝试运行它时,他们的二进制文件找不到该文件(即使该文件就在他们的bin文件夹中)

因此,在我的工作区中,我有以下结构和文件:

com.test.test.java
com.common.Utility.java
com.common.PackageRFCs.properties
在我的test.java中,我试图以以下方式读取属性文件:

Class<com.common.Utility> dummy = com.common.Utility.class;
String propURI = dummy.getPackage().getName().replace('.','/') + "/PackageRFCs.properties";
String filepath = ClassLoader.getSystemClassLoader().getResource(propURI).getFile();
...
BufferedReader br = new BufferedReader(new FileReader(filepath));
// do some read line stuff here
Class dummy=com.common.Utility.Class;
字符串propURI=dummy.getPackage().getName().replace('.','/')+“/PackageRFCs.properties”;
字符串filepath=ClassLoader.getSystemClassLoader().getResource(propURI.getFile();
...
BufferedReader br=新的BufferedReader(新文件读取器(文件路径));
//在这里读一些台词
上面的代码在我的Eclipse下工作得非常好,但在其他人试图运行它时失败了。我想也许我的垃圾箱里有一些悬空的文件,所以我做了一个项目>清理,我仍然能够完美地运行它。。。我也尝试过清理其他用户的工作区,但他们仍然无法读取文件。。。世跆联在进行什么


我无法重现我这边的问题。

如果你有一个来自
getResource()
的URL,你不需要将它转换成文件路径,然后用
文件阅读器打开它(这无论如何都不会起作用,因为
URL.getFile()
不是一个本机文件路径,它只是原始URL的一个子字符串)。只需首先使用
.openStream()
或调用
获取{System}ResourceAsStream()

BufferedReader br = new BufferedReader(new InputStreamReader(
    ClassLoader.getSystemResourceAsStream(propURI), "ISO-8859-1"));
(我假设为ISO-8859-1编码,因为文件名为
.properties
,这是Java属性文件的标准编码,但如果这是错误的,请更改编码以匹配文件)

但考虑到您所阐述的结构,使用它会更加健壮

Utility.class.getResourceAsStream("PackageRFCs.properties")

它自动为您处理包到路径的映射,并且能够处理由系统类加载器以外的类加载器加载类的情况。

如果您有来自
getResource()
的URL,则无需将其转换为文件路径并使用
文件读取器打开该文件路径(无论如何,这不会起作用,因为
URL.getFile()
不是本机文件路径,它只是原始URL的子字符串)。只需使用
.openStream()
或首先调用
get{System}.ResourceAsStream()

BufferedReader br = new BufferedReader(new InputStreamReader(
    ClassLoader.getSystemResourceAsStream(propURI), "ISO-8859-1"));
(我假设为ISO-8859-1编码,因为文件名为
.properties
,这是Java属性文件的标准编码,但如果这是错误的,请更改编码以匹配文件)

但考虑到您所阐述的结构,使用它会更加健壮

Utility.class.getResourceAsStream("PackageRFCs.properties")

它会自动为您处理包到路径的映射,并且能够处理由系统类加载器以外的类加载器加载类的情况。

通过在commando提示符下运行.class文件来检查文件是否实际位于类路径中(请检查我的答案是否非常类似)您是否尝试过编写文件的手动路径而不是使用类加载器?是的,我尝试了几种不同的方法来读取文件,实际上在StackOverflow上遇到了3个不同的问题。@下面的Ian Roberts解决了这个问题,我必须使用GetResourceAsstream通过运行.class-fi来检查文件是否确实在类路径中突击队提示下的le(请检查我的答案是否非常相似)您是否尝试过编写手动路径而不是使用ClassLoader来读取文件?是的,我尝试了几种不同的方法来读取文件,实际上在StackOverflow上遇到了3个不同的问题。@下面的Ian Roberts解决了这个问题,我必须使用GetResourceAsStreamWaw,非常干净。使用getResourceAsStream现在工作得非常好!非常好关于getResources()的解释很好,我希望我能多给你几个大拇指。谢谢伊恩!哇,这么干净。使用getResourceAsStream现在工作得很好!关于getResources()的解释很好,我希望我能多给你几个大拇指。谢谢伊恩!