2015-04-23 224 views
0

我的groovy程序創建了一個csv,它對於新行具有\ n。但客戶希望\ r \ n在他們運行Windows時。如何在groovy中將「 n」替換爲「 r n」?

據我所知,這個問題是回答的時候每噸SO這裏包括How to remove line breaks from a file in Java?

這個腳本在這裏不替換\ n與\ r \ n。 \ n剛剛停留在

newline = System.getProperty("line.separator"); 
    for (int i = 0; i < dataContext.getDataCount(); i++) { 
     InputStream is = dataContext.getStream(i); 
     Properties props = dataContext.getProperties(i); 

     reader = new BufferedReader(new InputStreamReader(is)); 
     outData = new StringBuffer(); 
     lineNum = 0; 

     while ((line = reader.readLine()) != null) { 
      line.replace(newline, "\r\n") 
      outData.append(line); 


     } 
     is = new ByteArrayInputStream(outData.toString().getBytes("UTF-8")); 

     dataContext.storeStream(is, props); 
    } 
+1

作爲一個方面說明,你應該總是關閉()你的流在finally {...}塊。 –

+0

如果要從第二個命令轉換文件,請使用類似dos2unix的文件。 但是,如果要使用適當的行分隔符生成文件,可以簡單地在生成文件本身的腳本中設置適當的行分隔符: System.setProperty(「line.separator」,「\ r \ n 「) – user1708042

回答

3

您正在使用readLine正在讀取文件一行 - 這已經刪除了以你爲結尾的行。

你需要做的是像現在一樣逐行讀一行 - 然後在每行之間追加\ r \ n,而不是替換。

while ((line = reader.readLine()) != null) { 
     outData.append(line); 
     outData.append("\r\n"); 
    } 
+0

謝謝,我的壞。現在我只在每行的結尾處有\ n。 我將文件作爲.csv寫入Windows文件系統並使用SublimeText打開。在這裏我嘗試搜索'\ r \ n'並且它什麼也沒有返回。 – lonelymo

相關問題