[英]How do I convert InputStream into a String?
我尝试了这个:
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
错误。
您试图作为InputStream读取的资源应该存在于Java类路径中。 否则,当您尝试从中创建InputStreamReader
时, getResourceAsStream()
将返回null,从而导致NullPointerException
。 有关如何读取资源的信息,请参见将文件作为输入流加载的方式不同 。
请尝试一个简单的文件:
InputStream file = new FileInputStream("highScore.txt");
如果您在选择正确的路径时遇到问题,请执行以下操作:
System.out.println(new File("highScore.txt").getAbsolutePath());
这将很快告诉您“当前”目录是什么。 你可能会发现你需要使用"../highScore.txt"
如果你需要去了一级目录,或"/somedir/highScore.txt"
如果你需要往下走,等等。
我发现打印绝对路径是解决此类问题的最快方法。
干得好
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();
您可以使用此一线式文件到字符串
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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.