How to print multiple line input using PrintWriter to be saved on text file? Code inside

StackOverflow https://stackoverflow.com/questions/19012203

سؤال

I have here a code which I will be using as a logging in my Java Server. This seems to be working fine in single line input. But when I entered multiple line. For example:

Hey there!
Hey More!

And when I looked at the textfile which the PrintWriter had created, it show me:

Hey there!Hey More!

What I want to see on my textfile is:

Hey there!
Hey More!

Here is my code: I don't know how will I append that. I'm thinking of \n but that doesnt work. Or is there something missing within my code. Please kindly check and you'll be a great help to me! Thanks!

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");
            }
هل كانت مفيدة؟

المحلول 2

Are you in windows? Using \n is not enough you need \n\r.

You can get a system independent line separator from:

System.getProperty("line.separator");

Or in Java 1.7:

System.lineSeparator();

in your code replace all "\n" with one of the above.

In a different note: As other people said, consider using a log framework.

نصائح أخرى

BufferedWriter has a newLine method. You should probably use the same

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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top