1

我正在从数据库表中导出数据并将其写入文件中。换行符从数据库中正确检索并在写入字符串时保留(因此我能够重新导入导出的数据)。

我的问题是文件中的换行符是隐式的(即它们显示为换行符)。如果数据库值是字符串“line1 \r\n line2”,直接发送这个String给我的BufferedWriter + FileOutputStream的结果就是“line1 line2”

有什么方法可以将“line1 \r\n line2”字符序列准确写入文件?(我已经尝试过 bw.write(value.toCharArray())

4

1 回答 1

2

您可以用双反斜杠替换每个转义序列:

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;
}

可以轻松添加双撇号和单撇号转义,但我在此答案中省略了它。

于 2012-12-04T06:29:18.993 回答