我从数据库表中导出数据并将其写入文件中。从数据库中正确检索换行符并在写入字符串时保留(因此我可以重新导入导出的数据)。
我的问题是在文件中换行符是隐式的(即它们显示为换行符)。如果数据库值是字符串“line1 \ r \ n line2”,则直接将此String发送到我的BufferedWriter + FileOutputStream的结果是 “一号线 LINE2"
有没有什么方法可以将文件写入“line1 \ r \ n line2”字符序列? (我已经尝试过bw.write(value.toCharArray())
答案 0 :(得分:1)
您可以使用双反斜杠替换每个转义序列:
public static String escapeChars(String str) {
char[][] escapes = {
{ '\n', 'n' },
{ '\r', 'r' },
{ '\f', 'f' },
{ '\b', 'b' },
{ '\t', 't' }
};
for (char[] escape : escapes) {
str = str.replaceAll(Character.toString(escape[0]), "\\\\" + escape[1]);
}
return str;
}
可以轻松添加双撇号和单撇号,但我在此答案中省略了它。