从 JAR 中存在的目录中查找路径



我正在尝试使用一个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 上迭代时,当我尝试读取文件时,我需要从中获取文件的文件路径,但我没有得到文件路径。所以我想知道我如何获取文件路径?

您不能将 JAR 中的文件作为File对象进行访问,因为在 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();

但正如我所说,首先使用流而不是文件对象会让你更加灵活。

如果您在编译时真的不知道目录中的所有文件,您可能会对这个列出内容的答案感兴趣。

相关内容

  • 没有找到相关文章

最新更新