StringReader的新行字符 - \ n被忽略?

时间:2013-07-09 17:27:00

标签: java csv format inputstream stringreader

我有这段代码:

String sampleString = "1223,4455,6667" + "\n" + "1223,4455,6667" + "\n";

BufferedReader reader = new BufferedReader(new StringReader(sampleString));
String line;
while ((line = reader.readLine()) != null) {
   if (line.trim().length() == 0) {
        continue;
   }
   logger.debug("CSVLIne:" + line);
}

我期待它打印两行。但它显示了一条线。这段代码有什么不对吗?

3 个答案:

答案 0 :(得分:2)

因为logger.debug在一行上输出而没有换行符。如果要在两行上打印,则需要使用logger.debug两次。

答案 1 :(得分:2)

我自己试过,上面的代码在使用System.out.println输出时在我的机器上打印了两行。

正如其他人所指出的,“\ n”不是独立于平台的,而是根据BufferedReader documentation

  

任何一个换行都认为一行被终止   ('\ n'),回车符('\ r')或随后的回车符   立即用换行符。

应该没问题。

答案 2 :(得分:1)

你需要逃避这些换行符

    String sampleString = String.format("1223,4455,6667%n1223,4455,6667%n")

%n格式说明符引入了依赖于平台的换行符。