我试过了:
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
错误。
答案 0 :(得分:2)
您尝试读取为InputStream的资源应该存在于Java Classpath中。否则getResourceAsStream()
会返回null,当您尝试从中创建NullPointerException
时会导致InputStreamReader
。有关如何阅读资源的信息,请参阅different-ways-of-loading-a-file-as-an-inputstream。
答案 1 :(得分:2)
请尝试使用简单文件:
InputStream file = new FileInputStream("highScore.txt");
如果您在确定正确路径时遇到问题,请执行以下操作:
System.out.println(new File("highScore.txt").getAbsolutePath());
那将很快告诉你"当前"目录是。如果您需要上一个目录级别,可能会发现需要使用"../highScore.txt"
;如果需要下去,则可能需要"/somedir/highScore.txt"
等。
我发现打印绝对路径是解决这类问题的最快方法。
答案 2 :(得分: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();
答案 3 :(得分: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);
}
}