に私がバンドルされた.txtファイルからテキストを読み取るために読書テキストファイルは、IDEで動作しますが、.jarファイル
File file = new File("res/movies.txt");
を使用していません。私のコードは、IntelliJ IDEA内でプログラムを実行すると完全に動作しますが、.jarファイルを作成して実行すると「ファイルが見つかりません」というエラーが表示されます。 IDEとjarファイルの両方でコードを動作させるにはどうすればよいですか?
に私がバンドルされた.txtファイルからテキストを読み取るために読書テキストファイルは、IDEで動作しますが、.jarファイル
File file = new File("res/movies.txt");
を使用していません。私のコードは、IntelliJ IDEA内でプログラムを実行すると完全に動作しますが、.jarファイルを作成して実行すると「ファイルが見つかりません」というエラーが表示されます。 IDEとjarファイルの両方でコードを動作させるにはどうすればよいですか?
movies.jarある前提としています。 Class.getResourceAsStream
またはClassLoader.getResourceAsStream
を使用できます。それぞれはリソースに対してInputStream
を返します。
InputStream
を取得したら、適切なエンコーディングを指定してInputStreamReader
にラップして、そこからテキストを読み取ります。
は、あなたがリソースから読み込まれ、任意のファイルから読み込ん時々、時にはに必要がある場合、それはファイルやリソースのための上記の方法のいずれかのFileInputStream
を作成するのいずれかに別々のパスを使用するのが最善ですが、それ以降はすべて同じことをやってください。ここ
コードと同じJARファイルにバンドルされるべきであるresources/names.txt
から各ラインを印刷する例は次のとおり
package example;
import java.io.*;
import java.nio.charset.*;
public class Test {
public static void main(String[] args) throws IOException {
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(
Test.class.getResourceAsStream("/resources/names.txt"),
StandardCharsets.UTF_8))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}
}
私はあなたがここで何を意味するのか理解するのに苦労しています。投稿を編集して、実際に使用するコードを追加できますか?ありがとう。 – Mikkel
@Mikkel:私は例を追加しましたが、私はいくつかの研究があなた自身でそこにある可能性があると考えています。 –
は
ファイルファイル=新しいファイル( "RES/movies.txt")を変更してみてください。
へのファイルファイル=新しいファイル( "RES/movies.jar");当然の
これは、ファイル名はあなたがリソースとしてファイルをロードする必要があり
いいえ、要点は、テキストファイルが* jarファイル内にあることです。 –
申し訳ありません質問を誤読 – Kip242
ファイルがクラスパス上に読み取り専用「リソース」として配置されている場合(にjar)、あなたはJon Skeetの答えと同じようにInputStreamとして取得できます。ファイルは、オペレーティングシステムのファイルシステム用です。 –