Writing a formatted string to a file - Java
Asked Answered
L

4

5

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();
}
Lanilaniard answered 17/9, 2015 at 9:33 Comment(1)
Override Object#toString in your variable's class.Theotheobald
L
2

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.

Lucianaluciano answered 17/9, 2015 at 9:37 Comment(0)
D
3

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));
Demoss answered 17/9, 2015 at 9:36 Comment(0)
M
2

Use

WRITE_MY_LINE(String.format(" I = %3d  var = %9.6f", i, myVar));
Maurits answered 17/9, 2015 at 9:36 Comment(0)
L
2

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.

Lucianaluciano answered 17/9, 2015 at 9:37 Comment(0)
A
2

You can also use java.util.Formatter from java 7 . refer documentation:

java.util.Formatter

Acorn answered 17/9, 2015 at 9:40 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.