3

.jar ファイルのルートからテキスト ファイルをロードしようとしています。私はこのようなことを試しました:

InputStream is = getClass().getResourceAsStream("/infobook.txt");
Scanner scan = new Scanner(is);
ArrayList<String> strings = new ArrayList<String>();
while(scan.hasNextLine())
{
    strings.add(scan.nextLine());
}

実行時例外は発生しませんが、ArrayList に行は追加されません。次に、次のようなことを試しSystem.out.println(scan.nextLine());ましたが、java.util.NoSuchElementException: No line found例外が発生しました。今、私はかなり立ち往生していて、あなたの助けが必要です. テキスト ファイルには 21 行のテキストがあります。このテキスト ファイルを jar からロードするにはどうすればよいですか?

[編集] また、次のように入力ストリームを読み取ろうとしました:

InputStream is = getClass().getResourceAsStream("/infobook.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
System.out.println(br.readLine());

次のエラーが発生します。java.util.zip.ZipException: invalid stored block lengths

4

4 に答える 4

2

I would check there is not a file in your classpath (one you don't expect) which is empty. Try printing

// print where the file is found.
System.out.println(getClass().getResource("/infobook.txt"));
于 2013-01-07T20:30:07.863 に答える
0

文字セットに問題がある可能性があります。これを明示的に選択します。

Scanner scan = new Scanner(is, "Windows-1252");
于 2013-01-07T20:35:36.350 に答える
0

同様のシナリオを作成しようとしましたが、常に正常に実行されました。ただし、間違ったファイル名を指定しても、別の例外が作成されます。つまり、スキャナーはそれを読み取ることができません

于 2013-01-07T20:33:21.237 に答える
0

今後これを表示する場合 - OSX を使用している場合は、Java を更新してみてください。それは私のために働いたし、あなたのために働くかもしれません. それ以外の場合は、以下/上記の他の回答を試してください。

于 2013-01-07T21:47:32.367 に答える