Java - 使用 InputStream 读取行

新手上路,请多包涵

我使用 InputStream 读取一些数据,所以我想读取字符直到换行或 ‘\n’。

原文由 Ahmad Naoum 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

你应该使用 BufferedReaderFileInputStreamReader 如果你从文件中读取

BufferedReader reader = new BufferedReader(new FileInputStreamReader(pathToFile));

或与 InputStreamReader 如果你从任何其他阅读 InputStream

 BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

然后在循环中使用它的 readLine() 方法

while(reader.ready()) {
     String line = reader.readLine();
}

但是如果你真的喜欢 InputStream 那么你可以使用这样的循环

InputStream stream;
char c;
String s = "";
do {
   c = stream.read();
   if (c == '\n')
      break;
   s += c + "";
} while (c != -1);

原文由 Tommaso Pasini 发布,翻译遵循 CC BY-SA 4.0 许可协议

长话短说

在 --- 块中使用 BufferedReader try-with 块,完成后将关闭资源。


可以使用 BufferedReader 和 Scanner 读取输入流。如果没有充分的理由,最好使用 BufferedRead(有关 BufferedReader 与 Scanner 的广泛讨论, 请参阅 参考资料)。

我还建议将 Buffered Reader 与 try-with-resources 一起使用,以确保资源自动关闭。

看下面的代码

try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
        while (reader.ready()) {
            String line = reader.readLine();
            System.out.println(line);
        }
    }catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

原文由 Memin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题