Java 如何使用PrintWriter打印要保存在文本文件中的多行输入?内部代码
我这里有一个代码,我将使用它作为Java服务器的日志记录。 这似乎在单行输入中运行良好。但当我进入多行。例如:Java 如何使用PrintWriter打印要保存在文本文件中的多行输入?内部代码,java,logging,text,printwriter,Java,Logging,Text,Printwriter,我这里有一个代码,我将使用它作为Java服务器的日志记录。 这似乎在单行输入中运行良好。但当我进入多行。例如: Hey there! Hey More! 当我看到PrintWriter创建的文本文件时,它显示: Hey there!Hey More! 我想在我的文本文件中看到的是: Hey there! Hey More! 这是我的代码:我不知道如何附加它。我正在考虑\n但这不起作用。或者我的代码中缺少了什么。请检查一下,你会帮我大忙的!谢谢 try {
Hey there!
Hey More!
当我看到PrintWriter创建的文本文件时,它显示:
Hey there!Hey More!
我想在我的文本文件中看到的是:
Hey there!
Hey More!
这是我的代码:我不知道如何附加它。我正在考虑\n但这不起作用。或者我的代码中缺少了什么。请检查一下,你会帮我大忙的!谢谢
try
{
clientSocket = serverSocket.accept(); // accept the client connection
inputStreamReader = new InputStreamReader(clientSocket.getInputStream());
bufferedReader = new BufferedReader(inputStreamReader); // get the client message
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
StringBuilder str =new StringBuilder();
StringBuilder abc =new StringBuilder();
while ((message = bufferedReader.readLine()) != null)
{
abc.append("Message from " + message + " at " + dateFormat.format(cal.getTime())+"/n");
System.out.println("Message from " + message + " at " + dateFormat.format(cal.getTime()));
str.append(message+"\n");
}
PrintWriter out= new PrintWriter(new BufferedWriter(new FileWriter("C:/god.txt", true)));
out.println(abc);
out.close ();
JOptionPane.showMessageDialog(null, str);
inputStreamReader.close();
clientSocket.close();
} catch (IOException ex)
{
System.out.println("Problem in message reading");
}
BufferedWriter
有一个换行方法。你可能应该用同样的方法
String line = new String();
BufferedWriter writer= nnew BufferedWriter(new FileWriter("C:/god.txt", true));
while ((message = bufferedReader.readLine()) != null)
{
line = "Message from " + message + " at " + dateFormat.format(cal.getTime());
System.out.println("Message from " + message + " at " + dateFormat.format(cal.getTime()));
writer.write(line);
writer.newLine();
}
PrintWriter out= new PrintWriter(writer);
你在窗户里吗?仅使用\n是不够的,您需要\n\r 您可以从以下位置获得独立于系统的行分隔符:
System.getProperty("line.separator");
或者在Java 1.7中:
System.lineSeparator();
在代码中,将所有“\n”替换为上面的一个
在不同的注释中:正如其他人所说的,考虑使用日志框架。您已经发布了代码> /n”/代码>。翻转它。另外,
println()
在字符串末尾添加了一行新行。或者,更好的方法是,使用许多优秀的现有日志框架中的一个,而不是使用自己的日志框架。将其还原为\n,我的问题仍然会出现。即使我输入了多行,它还是以单行输出。怎么了?!?!如何将其集成到代码中?我将用BufferedWriter替换PrintWriter?怎么用?你能给我看看吗?请随意编辑我上面的代码。编辑答案。。我觉得您应该在循环中换行,而不是\n@在循环窗口中逐行打印时,PrintWriter.println()也应该起作用。如何处理System.getProperty(“行分隔符”)?我怎样才能把它写进我的代码里?请随意编辑我上面的代码。另外,为了获得更好的代码,请使用多个附录,而不是+例如:str.append(message).append(System.getProperty(“line.separator”);