我在UNIX服务器上构建一个字符串,然后将其写在Windows机器上。要进行换行,我使用“ \ r \ n”,但是服务器仅添加了Unix换行符“ \ n”。关键是eol在十六进制0a中,其他程序需要0d0a。
有没有人在将换行符写下在Windows机器上之前将其转换?
要将字符串转换为十六进制,然后将所有0a替换为0d0a,然后将其转换回字符串不是最佳实践。有谁有更好的解决方案?
最佳答案
将"\r\n"
写入文件,即使在* nix上,也会向该文件输出"\r\n"
,而不是"\n"
。这是一个使用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示例
写入test.txt
完成
证明它将
\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 |正在测试1 2 3..M |
00000010 6f 72 65 20 54 65 73 74 69 6e 67 0d 0a | ore Testing .. |
0000001d
关于java - Java-将Unix换行符转换为回车符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37270015/