0

私はこれを試しました:

  InputStream file = Test.class.getResourceAsStream("highScore.txt");
  BufferedReader br = new BufferedReader (new InputStreamReader(file));
  String text;
  text = br.readLine();
  while (text!=null) {
    System.out.println (text);
  }

しかし、私はNullPointerExceptionエラーが発生します。

4

4 に答える 4

2

InputStreamとして読み取ろうとしているリソースは、Javaクラスパスに存在する必要があります。それ以外の場合はnullを返し、それから作成しようとしたときgetResourceAsStream()につながります。リソースの読み取り方法については、inputstreamとしてのファイルのロード方法を参照してください。NullPointerExceptionInputStreamReader

于 2012-06-16T06:05:31.843 に答える
2

代わりに単純なファイルを試してください。

InputStream file = new FileInputStream("highScore.txt");

編集済み

パスを正しく取得するのに問題がある場合は、次のようにします。

System.out.println(new File("highScore.txt").getAbsolutePath());

これにより、「現在の」ディレクトリが何であるかがすぐにわかります。"../highScore.txt"ディレクトリレベルを1つ上げる必要がある"/somedir/highScore.txt"場合、または下げる必要がある場合などに使用する必要がある場合があります。

絶対パスを印刷することが、この種の問題を解決する最も簡単な方法だと思います。

于 2012-06-16T06:05:50.267 に答える
1

どうぞ

StringWriter writer = new StringWriter();
IOUtils.copy(file, writer, encoding);
String theString = writer.toString();

あなたgetResourceAsStreamがそこに適切なInputStream.putログを返しているかどうかは疑問です

BufferedReaderを使用する場合は、次のスニペットを使用することもできます。

    BufferedReader br = new BufferedReader(new InputStreamReader(is));

    StringBuilder sb = new StringBuilder();

    String line;

    while ((line = br.readLine()) != null) 
     {
        sb.append(line);
     } 

   System.out.println(sb.toString());

   br.close();
于 2012-06-16T06:04:45.303 に答える
0

このワンライナーをファイルから文字列に使用できます

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ScannerSample {

    public static void main(String[] args) throws FileNotFoundException {
     //Z means: "The end of the input but for the final terminator, if any"
        String output = new Scanner(new File("file.txt")).useDelimiter("\\Z").next();
        System.out.println("" + output);
    }
}
于 2012-06-16T17:53:38.647 に答える