0

それ自体が別の Web プロジェクトの Web アプリケーションである jar ファイルを使用しようとしています。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

FileJAR 内のファイルにオブジェクトとしてアクセスすることはできません。これは、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();

しかし、前述したように、そもそもファイル オブジェクトの代わりにストリームを使用すると、柔軟性が向上します。

コンパイル時にディレクトリ内のすべてのファイルが本当にわからない場合は、コンテンツをリストするこの回答に興味があるかもしれません

于 2013-01-31T07:41:52.757 に答える