问题
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();
}
回答1:
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.
回答2:
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));
回答3:
Use
WRITE_MY_LINE(String.format(" I = %3d var = %9.6f", i, myVar));
回答4:
You can also use java.util.Formatter from java 7 . refer documentation:
java.util.Formatter
来源:https://stackoverflow.com/questions/32626991/writing-a-formatted-string-to-a-file-java