我正在使用Java 6,我有一个方法来扫描运行时类路径中名为config.xml
的文件。如果找到了,我想将文件内容读入一个字符串中:
我目前使用Java 6版本,并编写了一个扫描运行时类路径中名为config.xml
的文件的方法。若找到该文件,我希望将其内容读入一个字符串中:
InputStream istream = this.getClass().getClassLoader().getResourceAsStream("config.xml");
if(istream != null) {
System.out.println("Found config.xml!");
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader;
try {
reader = new BufferedReader(new FileReader(fileName));
char[] buf = new char[1024];
int numRead = 0;
while((numRead=reader.read(buf)) != -1) {
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
reader.close();
}
} catch (FileNotFoundException fnfExc) {
throw new RuntimeException("FileNotFoundException: " + fnfExc.getMessage());
} catch (IOException ioExc) {
throw new RuntimeException("IOException: " + ioExc.getMessage());
}
}
当我运行这段代码时,控制台输出如下:Found config.xml!
Exception in thread "main" java.lang.RuntimeException: FileNotFoundException: config.xml (No such file or directory)
at com.me.myapp.Configurator.readConfigFileFromClasspath(Configurator.java:556)
at com.me.myapp.Configurator.<init>(Configurator.java:34)
...rest of stack trace omitted for brevity
所以,config.xml
的类路径扫描成功了,但读取器似乎无法找到该文件。为什么? 我唯一的理论是当在类路径上找到config.xml
时,它不包含文件系统上文件位置的绝对路径,也许这就是读取器代码正在寻找的内容。
this.getClass().getResourceAsStream("config.xml")
吗? - Vishal Kistream
读取? - raptortech97