Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复制二进制文件会将换行符更改为窗口';标准是什么。。?JAVA_Java_Sockets_File_Newline_Copying - Fatal编程技术网

复制二进制文件会将换行符更改为窗口';标准是什么。。?JAVA

复制二进制文件会将换行符更改为窗口';标准是什么。。?JAVA,java,sockets,file,newline,copying,Java,Sockets,File,Newline,Copying,由于某些原因,此代码正在更改输入中的任何'\n'字符,并在新输出的文件中将其替换为'\n\r'。 我参考了几个网站,但仍然没有弄清楚。。有人有主意吗? 非常感谢 Socket connectionSocket = sData.accept(); InputStream inputStream = connectionSocket.getInputStream(); BufferedInputStream inputBufferedStream = new BufferedInputStream(

由于某些原因,此代码正在更改输入中的任何'\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();
  }

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


只有当您使用
BufferedReader#readLine()
读取时,才会发生这种情况,它会吃掉换行符,并使用添加平台默认换行符的
PrintWriter#println()
写入换行符。可能是另一方在这么做?毕竟,
读取器
/
写入器
不应该用于二进制数据。它可能会变形。使用
InputStream
/
OutputStream

您能验证更改为\r\n的不是发送端吗?问题基于错误的前提。非常感谢!发送数据正在将\n更改为\r\n不客气。别忘了把答案标为已接受。另见。