如何在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);
}
答
您正在使用readLine正在读取文件一行 - 这已经删除了以你为结尾的行。
你需要做的是像现在一样逐行读一行 - 然后在每行之间追加\ r \ n,而不是替换。
while ((line = reader.readLine()) != null) {
outData.append(line);
outData.append("\r\n");
}
+0
谢谢,我的坏。现在我只在每行的结尾处有\ n。 我将文件作为.csv写入Windows文件系统并使用SublimeText打开。在这里我尝试搜索'\ r \ n'并且它什么也没有返回。 – lonelymo
作为一个方面说明,你应该总是关闭()你的流在finally {...}块。 –
如果要从第二个命令转换文件,请使用类似dos2unix的文件。 但是,如果要使用适当的行分隔符生成文件,可以简单地在生成文件本身的脚本中设置适当的行分隔符: System.setProperty(“line.separator”,“\ r \ n “) – user1708042