2

私はすでに私のものに似た他の多くの質問を見てきましたが、残念ながらそれらの答えは今のところうまくいきません。

私は次のようなJavaプロジェクトを持っています:

私のプロジェクト/
    src /
        abc /
            MyClass.java
        xyz /
            file1.txt
            file2.txt
            ..。       

基本的に、上記のすべてのtxtファイルを読み込もうとしていますMyClass.java。これは私が現在行っていることです:

File dir = new File("src/xyz/");
for (File child : dir.listFiles()) {
    ...
}

これは、すべてをJAR形式に変換するまでは正常に機能します。その時点でdir.listFiles()戻りnull、上記は機能しなくなります。とにかく、JARにパックされている場合でもこれらのtxtファイルを読み取ることができますか?また、違いがあればEclipseを使用しています。

4

2 に答える 2

8

クラスローダーを介して、クラスパス上のファイルにアクセスできます。

getClass().getResourceAsStream("/xyz/file1.txt");

その後InputStream、通常どおり使用します。絶対パスを使用していますが、現在のパッケージに対する相対パスも機能することに注意してください。

Java 6 以降、パッケージの下にあるすべてのリソースを非常に簡単に一覧表示することもできます。

 Enumeration urls = getClass().getClassLoader().getResources("xyz");
 urls.nextElement().openStream();
于 2013-01-21T18:46:31.037 に答える
1

これらのtxtファイルがJARにパックされている場合でも、これらのtxtファイルを読み取ることができますか?

「事前に名前を知らなくても」という意味ではありません。

OTOH では、Jar の既知の場所にリソースを含め、その中の可能なテキストを一覧表示できます。ルートまたはクラスパスからのパスを 1 行に 1 つずつ指定するとうまくいきます。次のようなものを使用して、リソースへの URL を取得します。

URL url = this.getClass().getResource("/path/to/the.resource");
于 2013-01-21T18:49:07.867 に答える