【发布时间】:2015-07-06 15:26:51
【问题描述】:
我有一个需要导出到数据库 (Vertica) 的 Unicode 文件。列分隔符是 CTRL+B,记录分隔符是换行符(\n)。每当列值中有换行符时,CTRL+A 用作转义字符。
当我使用 BufferedReader.readLine() 读取此文件时,ID 为 2 和 4 的记录被读取为两条记录。而我想将它们作为输出中给出的单个完整记录来阅读。
这是示例输入文件。 |代表 CTRL+B,^ 代表 CTRL+A。
Input
ID|Name|Job Desc
----------------
1|xxxx|SO Job
2|YYYY|SO Careers^
Job
3|RRRRR|SO
4|ZZZZ^
ZZ|SO Job
5|AAAA|YU
Output:
ID|Name|Job Desc
----------------
1|xxxx|SO Job
2|YYYY|SO Careers Job
3|RRRRR|SO
4|ZZZZ ZZ|SO Job
5|AAAA|YU
文件很大,所以我不能使用 StringEscapeUtils。对此有何建议?
【问题讨论】:
-
你想在这里做什么?读取输入文件并以不同格式输出?你的问题不清楚。
-
我正在尝试读取文件并获取准备好的语句。我希望以输出格式读取文件。
-
根据
BufferedReader.readLine()的文档,只有\n或\r\n被视为新行。您的记录 2 和 4 应该不被读取为 2 个单独的行。 -
2&4上的job desc值用换行符分隔,Ctrl+a用作转义字符。所以它把它们读成两行
-
您可以使用
Scanner与自定义分隔符设置为不匹配CTRL+A后跟\n
标签: java escaping bufferedreader unicode-escapes