Java - 将unix换行转换为回车
我在unix服务器上构建一个字符串,然后将其写入windows maschine。要制作换行符,我使用“\ r \ n”,但是服务器只添加了unix换行符“\ n”。要点是eol在十六进制0a和我需要0d0a其他程序。Java - 将unix换行转换为回车
有没有人想过在将文字在Windows机器上书写之前进行换行?
要将字符串转换为十六进制,然后将所有0a替换为0d0a并将其转换回字符串不是最佳做法。有没有人有更好的解决方案
写入文件"\r\n"
将输出"\r\n"
而不是"\n"
,即使在* nix上也是如此。下面是一个例子,使用BufferedWriter
因为在一个点上,你说你正在使用一个:
import java.io.*;
public class Example {
public static final void main(String[] args) {
System.out.println("Writing to test.txt");
try (
Writer w = new FileWriter("test.txt");
BufferedWriter bw = new BufferedWriter(w);
) {
bw.append("Testing 1 2 3");
bw.append("\r\n");
bw.append("More Testing");
bw.append("\r\n");
}
catch (IOException ioe) {
System.err.println("Error writing to file: " + ioe.getMessage());
}
System.out.println("Done");
}
}
运行它:
$ java Example Writing to test.txt Done
证明其写入\r\n
(不只是\n
)和输出(是的,我使用的是* nix中,特别是Linux Mint的17.3):
$ hexdump -C test.txt 00000000 54 65 73 74 69 6e 67 20 31 20 32 20 33 0d 0a 4d |Testing 1 2 3..M| 00000010 6f 72 65 20 54 65 73 74 69 6e 67 0d 0a |ore Testing..| 0000001d
我已经试过了,但它似乎像unix无法解决\ r。 –
@JannickHerrmann:是的,它可以。也许如果你告诉我们什么是“br”,那么更多的上下文...... –
@JannickHerrmann:你的更新问题更一般,只是询问如何去做。这个答案仍然可以解答。我已经添加了一个例子。 –
如果你真的想改变默认整个应用程序,重新定义line.separato r启动时的系统属性(带-D参数)。但它是相当重量级的解决方案,只需为需要的特定报告显式编写换行符,而将其余所有内容(如本地日志文件或其他)与unix newlins一起留下,可能会更容易。
'br'是什么类型?我认为'BufferedReader',但显然这是输入,而不是输出... –
你的问题简单地声称'br'是一个'BufferedWriter'。 ['BufferedWriter'](http://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html)没有'appendLine'方法。所以,再次**,如果你告诉我们'br.appendLine()'中'br'的类型是什么类型,那么我们可以帮助你。 –
对不起,我编辑了问题,_appendLine()_是一个自己写的方法,simlpy添加了“\ r \ n”。 –