【问题标题】:Copying binary file changes newline character to window's standard..? Java复制二进制文件将换行符更改为窗口的标准..?爪哇
【发布时间】:2010-09-25 20:24:30
【问题描述】:

由于某种原因,此代码更改了输入中的任何“\n”字符,并在新输出文件中将其替换为“\n\r”。 我参考了几个网站,但还没有弄清楚..有人有想法吗? 非常感谢!

Socket connectionSocket = sData.accept();
InputStream inputStream = connectionSocket.getInputStream();
BufferedInputStream inputBufferedStream = new BufferedInputStream(inputStream);
FileOutputStream outputStream = new FileOutputStream("/home/greg/1");


     byte[] buffer = new byte[1024];
     long count = 0;
     int n = 0;
     while ((n = inputBufferedStream.read(buffer))>=0) {
         outputStream.write(buffer, 0, n);
         count += n;
     }
    outputStream.close();
  }

【问题讨论】:

  • 您能确认不是发送方将\n 更改为\r\n 吗?
  • 问题是基于一个错误的前提。

标签: java sockets file newline copying


【解决方案1】:

特定代码没有这样做。很可能那些\r\n 已经在输入源中了。

只有当您使用 BufferedReader#readLine() 读取换行符并使用附加平台默认换行符的 PrintWriter#println() 写入时才会发生这种情况。大概是对方这样做了?毕竟,Reader/Writer 不应该用于二进制数据。它可能会变形。使用InputStream/OutputStream

【讨论】:

  • 非常感谢!发送数据正在将 \n 更改为 \r\n
  • 不客气。不要忘记将答案标记为已接受。另请参阅stackoverflow.com/faq
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-10
相关资源
最近更新 更多