0

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

4

1 回答 1

0

您不能将 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();

But as I said, using streams instead of file objects in the first place makes you more flexible.

If you really don't know all the files in the directory at compile time you might be interested in this answer to list contents.

于 2013-01-31T07:41:52.757 回答