从缓冲区读取时省略换行符

2023-11-27

我编写了以下代码:

public class WriteToCharBuffer {

 public static void main(String[] args) {
  String text = "This is the data to write in buffer!\nThis is the second line\nThis is the third line";
  OutputStream buffer = writeToCharBuffer(text);
  readFromCharBuffer(buffer);
 }

 public static OutputStream writeToCharBuffer(String dataToWrite){
  ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
  BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(byteArrayOutputStream));
  try {
   bufferedWriter.write(dataToWrite);
   bufferedWriter.flush();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return byteArrayOutputStream;
 }

 public static void readFromCharBuffer(OutputStream buffer){
  ByteArrayOutputStream byteArrayOutputStream = (ByteArrayOutputStream) buffer;
  BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())));
  String line = null;
  StringBuffer sb = new StringBuffer();
  try {
   while ((line = bufferedReader.readLine()) != null) {
    //System.out.println(line);
    sb.append(line);
   }
   System.out.println(sb);
  } catch (IOException e) {
   e.printStackTrace();
  }

 }
}

当我执行上面的代码时,输​​出如下:

This is the data to write in buffer!This is the second lineThis is the third line

为什么会跳过换行符 (\n)?如果我取消注释System.out.println()如下:

while ((line = bufferedReader.readLine()) != null) {
        System.out.println(line);
        sb.append(line);
       }

我得到正确的输出:

This is the data to write in buffer!
This is the second line
This is the third line
This is the data to write in buffer!This is the second lineThis is the third line

这是什么原因呢?


JavaDoc Says

public String readLine()
                throws IOException

读取一行文本。一行被视为由换行符 ('\n')、回车符 ('\r') 或回车符后紧跟换行符之一终止。
Returns:
包含行内容的字符串,不包括任何行终止字符,如果已到达流末尾,则返回 null
投掷:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从缓冲区读取时省略换行符 的相关文章

随机推荐

  • Google Apps 脚本:如何检查日历事件是否已被手动标记为删除

    我编写了一个 Google Apps 脚本 它将电子表格中保存的事件添加到谷歌日历中 每个事件都会存储日历事件的 ID 以便在电子表格中的事件发生修改时可以更新它 该事件仍然可以在日历中手动删除 因此我希望脚本能够检测到这一点并重新创建该事
  • Spring-boot tomcat 只能提供少于 10,000 个连接?

    我正在使用 spring boot 测试服务器 然而 我在测试过程中遇到了一些问题 我的测试是 随着 Web 套接字会话 客户端数量 的增加 服务器使用多少内存 1 000 个客户端 少于 9000 个会话 进行测试没有问题 但是 当我尝试
  • 如何使用spring的MockMultipartHttpServletRequest?得到“未找到多部分边界”

    显然我没有正确使用这个测试装置 我的 servlet 在 tomcat 中工作得很好 但是当我尝试使用这个模拟时 找不到多部分边界 请求被拒绝 因为未找到多部分边界 有一个答案here显示了如何使用文本文件来使用它 但该答案显式设置了边界字
  • 从 python 中的文件中读取逗号分隔的元组

    我正在尝试从一个文件中读取多个用逗号分隔的元组 示例输入文件如下所示 0 0 0 2 0 4 1 1 0 2 1 1 1 3 1 1 1 3 1 1 1 3 1 5 2 0 2 2 3 3 2 4 3 5 4 4 5 3 6 4 5 5 7
  • 使用 ORMLite 和输出参数的 ServiceStack MARS(多个活动结果集)

    ServiceStack ORMLite 很棒 我通常会避开 ORM 心态 更喜欢构建数据库 因为构建数据库而不是 1 1 类模型更有意义 也就是说 有几件事我似乎遇到了困难 我确信这只是我的无知 First 有没有办法使用 ORMLite
  • 使用 itms-services URL 的 iOS8 应用程序无线 (OTA) 安装失败

    对于所有早期版本的 iOS 我都使用 itms services URL 无线安装测试 iOS 应用程序 OTA 现在 我的所有 iOS8 设备在尝试使用这种方法安装应用程序时都会失败 示例网址 itms services action d
  • 有没有像 Django 的 XAMPP 这样的多合一软件包?

    与 XAMPP 一样 您只需安装它并开始开发 因为 PHP MySQL Apache 等都在那里 Django 有类似的东西吗 附 我的意思只是为了在本地计算机上进行开发而不是为了部署 我见过的最接近的是Bitnami 的 DjangoSt
  • VB.Net调用New而不赋值

    In C 我可以做这个 new SomeObjectType abc 10 换句话说 我可以调用 new 而无需将创建的实例分配给任何变量 然而 在VB Net看来我不能做同样的事情 New SomeObjectType abc 10 sy
  • 如何将车把中的字符串解析为html [重复]

    这个问题在这里已经有答案了 我正在尝试将车把中的字符串解析为 html 例子 在 js file let url http google com let textref a href url Click here a in hbs file
  • 如何从 R 中的命名数值向量中检索简单的数值?

    我正在使用 R 来计算一些基本的统计结果 我正在使用 quantile 函数来计算数据框列上的分位数 如下所示 gt quantile foobars 1 0 25 50 75 100 189000 194975 219500 239950
  • 如何防止页面在表单提交后重新加载 - JQuery

    我正在为我的应用程序开发课程开发一个网站 但我遇到了最奇怪的问题 我正在使用一些 JQuery 将表单数据发送到名为 process php 的 php 页面 然后将其上传到我的数据库 奇怪的错误是 页面在提交表单后重新加载 而我或我的一生
  • 在 ggplot2 中向等值线图添加点

    我正在查看 Hadley Wickham 的以下示例ggplot2 library ggplot2 library maps states lt map data state arrests lt USArrests names arres
  • 给定一个任意的 javascript 对象,我如何找到它的方法?

    我知道这在 python 中是可能的 但是我可以获得 javascript 对象的方法列表吗 您可以循环对象中的属性并测试它们的类型 for var prop in whatever if typeof whatever prop func
  • 在文件夹迭代上实施 RAII

    我编写此代码是为了递归地循环遍历文件夹树并列出文件及其大小 以字节为单位 由于我使用的是 winapi 并且有一个Handle应该打开和关闭 我应该在此代码上实现 RAII 问题是在线论坛中给出的示例 更不用说我不是以英语为母语的人 并且包
  • 数据库表的位置 - MySQL - Windows XP

    All 这是我第一次使用 MySQL 因此列出了所有步骤 这实际上是 MySQL 的重新安装 因为我的第一次尝试失败了 我已在我的计算机上安装了最新版本的 MySQL Community Server 安装文件夹是C Program Fil
  • 如何在Java程序中使用Sqoop?

    我知道如何通过命令行使用 sqoop 但不知道如何使用java程序调用sqoop命令 谁能提供一些代码视图吗 您可以通过在类路径中包含 sqoop jar 并调用Sqoop runTool 方法 您必须以编程方式创建 sqoop 所需的参数
  • tan 45 给我 0.9999

    为什么tan 45 0 7853981633974483 弧度 给我0 9999 下面的代码有什么问题 System out println Math tan Math toRadians 45 0 我不认为这里有任何错字 那么这里的解决方
  • PHP MySQL连接持久化

    我读过很多关于 PHP 和 MySQL 之间的持久数据库连接 mysql connect 与 mysql pconnect 的内容 与 PDO 和 MySQLi 相同 这绝对是我对这一点缺乏了解 但是数据库连接如何在网页之间保持持久呢 在此
  • 如何使用 AngularJS 对多个对象应用过滤器?

    我的用户对象定义如下 scope users id 1 name Adam friends name John age 21 sex M name Brad age 32 sex M 然后我有以下代码 div div user name f
  • 从缓冲区读取时省略换行符

    我编写了以下代码 public class WriteToCharBuffer public static void main String args String text This is the data to write in buf