繁体   English   中英

如何将InputStream转换为String?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM