Ho scritto il seguente codice:Newline carattere omessi durante la lettura dal buffer
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();
}
}
}
Quando eseguo il codice di cui sopra, in seguito è l'output:
This is the data to write in buffer!This is the second lineThis is the third line
Perché sono i caratteri di nuova riga (\ n) saltato? Se io rimuovere il commento le System.out.println() come segue:
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
sb.append(line);
}
ottengo l'uscita corretta come:
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
Ciò che è motivo di questo?
'System.out.println (riga) non funzionante,' non fornisce l'output corretto, cos '' System.out.println stampa' una stringa con una nuova riga. Prova a sostituirlo con 'System.out.print (riga);' –