从jar中的目录中查找路径

时间:2013-01-31 07:15:37

标签: java file

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

1 个答案:

答案 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