Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Writing a formatted string to a file - Java

I have a string that I format with the System.out.format() method, I do something like :

System.out.format("I = %3d  var = %9.6f", i, myVar);

but when I try to write this formatted string into a file, I only get something like "java.io.PrintStream@84fc8d" in it.

After looking into the documentation understood that this method is a little like System.out.print() and just return a PrintStream to display (in console for example), so I tried converting it with .toString or String.valueOf() but I get the same result.

So I was wondering if there is a way to format a string just like the String.out.format() method does, but in a way that will be writable in a file ?

Here is approximately the code I use (just making the useful parts appear)

WRITE_MY_LINE(System.out.format(" I = %3d  var = %9.6f", i, myVar).toString());
//also tried this :
WRITE_MY_LINE(String.valueOf(System.out.format(" I = %3d  var = %9.6f", i, myVar)));

public static void WRITE_MY_LINE(String line) {
        buff_out = new BufferedWriter(new FileWriter(ascii_path, true));

        buff_out.append(line);
        buff_out.newLine();
        buff_out.flush();
}
like image 943
T.Durand Avatar asked Sep 17 '15 09:09

T.Durand


People also ask

What is the best way to write to a file in Java?

FileWriter: FileWriter is the simplest way to write a file in Java. It provides overloaded write method to write int, byte array, and String to the File. You can also write part of the String or byte array using FileWriter. FileWriter writes directly into Files and should be used only when the number of writes is less.


2 Answers

System.out.format returns PrintStream Object and toString method call is giving you java.io.PrintStream@84fc8d which you are trying to write.

You should use String.format instead.

i.e

WRITE_MY_LINE(String.format(" I = %3d  var = %9.6f", i, myVar));
like image 128
akash Avatar answered Nov 15 '22 07:11

akash


String.format is what you are looking for it returns a String and not a PrintStream like System.out.format.

Your code should be:

WRITE_MY_LINE(String.format(" I = %3d  var = %9.6f", i, myVar));

Take a look at Java.lang.String.format() Method for further information.

like image 22
cнŝdk Avatar answered Nov 15 '22 08:11

cнŝdk