用Formatter写入文件可以吗?

Is it ok to write in file with Formatter?

用 Formatter 写入文件是个好习惯吗? 例如:

Formatter g = null;
   try {
       g = new Formatter("data.out");
   } catch (FileNotFoundException e) {
       e.printStackTrace();
    }

int x = 3;
g.format("abc" + Integer.toString(x));
g.close();

我整个学期都在用 Formatter 写作,发现在文件中写入的一种常见方法是使用 PrintWriter。有没有可能我的作业中的某些程序不会写出它们应该写的东西?谢谢!

我不会说它本身有什么 "wrong"。您只需为您的输出获得 c 风格的格式化选项,尽管您确实失去了一些兼容性,因为 Formatter 没有扩展 Writer。

根据文档,我不认为你的作业输出是错误的。但是,如果你真的想确定,Formatter does happen to have a constructor that accepts Appandable objects, and PrintWriter, by virtue of extending Writer, happens to implement that interface. This means you could construct a Formatter such that it uses a PrintWriter to do its dirty work, instead of the default BufferedWriter 它通常会在内部用于输出到文件。但是,这会有点矫枉过正,因为虽然 Print 和 BufferedWriter 在异常处理、公开的方法和性能方面存在内部差异,但打印输出最终将是相同的,因为 Formatter 以相同的方式与两者交互。