Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用PrintWriter打印要保存在文本文件中的多行输入?内部代码_Java_Logging_Text_Printwriter - Fatal编程技术网

Java 如何使用PrintWriter打印要保存在文本文件中的多行输入?内部代码

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 {

我这里有一个代码,我将使用它作为Java服务器的日志记录。 这似乎在单行输入中运行良好。但当我进入多行。例如:

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”);