2010-09-25 45 views
0

由於某些原因,此代碼正在改變輸入中的任何'\ n'個字符,並在新的輸出文件中將其替換爲'\ n \ r'。 我參考了一對夫婦的網站,仍然沒有想通。任何人有想法? 非常感謝!複製二進制文件將換行符更改爲窗口的標準..? Java

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(); 
    } 
+0

您可以驗證它不是發送方將\ n更改爲\ r \ n嗎? – nos 2010-09-25 20:39:39

+0

問題是基於錯誤的前提。 – EJP 2010-09-26 04:02:44

回答

1

特定的代碼沒有這樣做。這些\r\n可能已經在輸入源中。

它只能在使用例如BufferedReader#readLine()讀取它時發生,它們吃掉換行符並使用PrintWriter#println()寫入它,後者附加了平臺默認換行符。可能另一方正在這樣做?畢竟,二進制數據不應該使用Reader/Writer。它可能會惡化它。使用InputStream/OutputStream

+0

非常感謝!發送數據正在將\ n更改爲\ r \ n – Greg 2010-09-25 20:43:17

+0

不客氣。不要忘記標記接受的答案。另見http://stackoverflow.com/faq。 – BalusC 2010-09-25 20:45:48