【发布时间】:2018-04-05 04:21:06
【问题描述】:
public static BufferedReader fileReaderAsResource(String filePath) throws IOException {
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath);
if (is == null) {
throw new FileNotFoundException(" Not found: " + filePath);
}
return new BufferedReader(new InputStreamReader(is, DEFAULT_ENCODING));
}
这适用于非 zip 文件。但是对于 zip 文件,如何返回 BufferedReader?以下内容不起作用,因为 'fileName' 是我的 'resources' 目录下的相对路径:
public static BufferedReader fileZipReader(String fileName) throws IOException {
ZipFile zip = new ZipFile(fileName);
for(Enumeration e = zip.entries(); e.hasMoreElements();){
ZipEntry zipEntry = (ZipEntry) e.nextElement();
if(!zipEntry.isDirectory()){
return new BufferedReader(new InputStreamReader(zip.getInputStream(zipEntry)));
}
}
throw new FileNotFoundException("File not found: " + fileName);
}
如何更改“fileZipReader”以使其工作?
【问题讨论】:
-
"is a relative path under my 'resources' directory" - 你的意思是它嵌入在你的应用程序二进制文件中,作为工作目录上下文中的独立目录存在?
-
src/main/resources
-
Out 所以它是一个嵌入式资源,这基本上使它成为一个 Zip 中的 Zip 文件。您将需要使用
Class#getResource或Class#getResourceAsStream并将文件解压缩到已知位置 -
你能回答一下吗?谢谢你。根据 Shailesh 的建议,我总是得到空指针。
-
As a conceptual example ...你必须使用
/main/resources作为你的路径
标签: java