5

我有一个使用该System.out.format()方法格式化的字符串,我执行以下操作:

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

但是当我尝试将此格式化的字符串写入文件时,我只会得到类似"java.io.PrintStream@84fc8d"的东西。

在查看文档后了解到,这种方法有点像System.out.print(),只是返回一个 PrintStream 来显示(例如在控制台中),所以我尝试用.toStringor转换它,String.valueOf()但我得到了相同的结果。

所以我想知道是否有一种方法可以像String.out.format()方法一样格式化字符串,但是可以在文件中写入?

这是我使用的大致代码(只是使有用的部分出现)

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();
}
4

4 回答 4

3

System.out.format返回PrintStream ObjecttoString方法调用为您提供java.io.PrintStream@84fc8d了您正在尝试编写的内容。

你应该String.format改用。

IE

WRITE_MY_LINE(String.format(" I = %3d  var = %9.6f", i, myVar));
于 2015-09-17T09:36:21.920 回答
2

采用

WRITE_MY_LINE(String.format(" I = %3d  var = %9.6f", i, myVar));
于 2015-09-17T09:36:55.813 回答
2

String.format是您要查找的内容,它返回 aString而不是PrintStreamlikeSystem.out.format

您的代码应该是:

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

查看Java.lang.String.format() 方法以获取更多信息。

于 2015-09-17T09:37:45.437 回答
2

您还可以使用 java.util.Formatter 从 java 7 。参考文档:

java.util.Formatter

于 2015-09-17T09:40:04.227 回答