如何在groovy中将“\ n”替换为“\ r \ n”?

问题描述:

我的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

您正在使用readLine正在读取文件一行 - 这已经删除了以你为结尾的行。

你需要做的是像现在一样逐行读一行 - 然后在每行之间追加\ r \ n,而不是替换。

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

谢谢,我的坏。现在我只在每行的结尾处有\ n。 我将文件作为.csv写入Windows文件系统并使用SublimeText打开。在这里我尝试搜索'\ r \ n'并且它什么也没有返回。 – lonelymo