将格式化字符串写入文件 - Java

Writing a formatted string to a file - Java

我有一个字符串,我用 System.out.format() 方法格式化,我做类似的事情:

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

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

查看文档后了解到此方法有点像 System.out.print() 并且只是 return 要显示的 PrintStream(例如在控制台中),所以我尝试将其转换为 .toStringString.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();
}

System.out.format returns PrintStream ObjecttoString 方法调用给你 java.io.PrintStream@84fc8d 你正试图写的。

您应该改用 String.format

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

使用

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

String.format 是您要找的 returns 一个 String 而不是 PrintStreamSystem.out.format.

您的代码应该是:

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

查看 Java.lang.String.format() Method 了解更多信息。

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

java.util.Formatter