【发布时间】:2011-06-17 01:14:09
【问题描述】:
我写了以下代码:
public class WriteToCharBuffer {
public static void main(String[] args) {
String text = "This is the data to write in buffer!\nThis is the second line\nThis is the third line";
OutputStream buffer = writeToCharBuffer(text);
readFromCharBuffer(buffer);
}
public static OutputStream writeToCharBuffer(String dataToWrite){
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(byteArrayOutputStream));
try {
bufferedWriter.write(dataToWrite);
bufferedWriter.flush();
} catch (IOException e) {
e.printStackTrace();
}
return byteArrayOutputStream;
}
public static void readFromCharBuffer(OutputStream buffer){
ByteArrayOutputStream byteArrayOutputStream = (ByteArrayOutputStream) buffer;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())));
String line = null;
StringBuffer sb = new StringBuffer();
try {
while ((line = bufferedReader.readLine()) != null) {
//System.out.println(line);
sb.append(line);
}
System.out.println(sb);
} catch (IOException e) {
e.printStackTrace();
}
}
}
当我执行上面的代码时,输出如下:
This is the data to write in buffer!This is the second lineThis is the third line
为什么会跳过换行符 (\n)?如果我取消注释 System.out.println() 如下:
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
sb.append(line);
}
我得到正确的输出为:
This is the data to write in buffer!
This is the second line
This is the third line
This is the data to write in buffer!This is the second lineThis is the third line
这是什么原因?
【问题讨论】:
-
取消注释
System.out.println(line);不会给出正确的输出,因为System.out.println prints是带有换行符的字符串。尝试将其替换为System.out.print(line);
标签: java bufferedreader linefeed