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 类路径中。否则getResourceAsStream()会返回 null,导致NullPointerException当你尝试创建InputStreamReader它时。有关如何读取资源的信息,请参见加载文件作为输入流的不同方式。

于 2012-06-16T06:05:31.843 回答
2

尝试一个简单的文件:

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

已编辑

如果您在获取正确路径时遇到问题,请执行以下操作:

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

这将很快告诉您“当前”目录是什么。"../highScore.txt"如果您需要上一级目录,或者"/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 回答