我正在尝试使用一个jar文件,它本身就是另一个Web项目中的Web应用程序。在我使用eclipse导出到jar功能创建的jar中,我已经存储了一个目录。要从我正在使用的目录中访问文件
BufferdReader tempDir = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(myDirPath),"UTF-8"));
// Then i iterate on tempDir
String line;
ArrayList<File> tempDirList = new ArrayList<File>();
int c = 0;
try {
while((line = tempDir.readLine())!= null)
{
File f = new File(line);
tempDirList.add(f);
c++;
}
} catch (IOException e)
{
e.printStackTrace();
}
现在关于tempDirList,当我尝试读取文件时,我需要文件路径,我从中获取文件,但我没有得到文件路径。 所以我想知道我是如何获得文件路径的?
答案 0 :(得分:0)
您无法以File
个对象的形式访问JAR中的文件,因为在Web容器中它们可能无法解压缩(因此没有文件)。您只能像通过流一样访问它们。
getClass().getResourceAsStream(myDirPath + "/file1.txt");
如果您确实需要File
个对象(大多数情况下很容易避免这种情况),请将文件复制到临时文件中,然后您可以访问这些文件。
File tmp = File.createTemp("prefix", ".tmp");
tmp.deleteOnExit();
InputStream is = getClass().getResourceAsStream(myDirPath + "/file1.txt");
OutputStream os = new FileOutputStream(tmp);
ByteStreams.copy(is, os);
os.close();
is.close();
但正如我所说,首先使用流而不是文件对象会让你更灵活。
如果您在编译时确实不知道目录中的所有文件might be interested in this answer to list contents。