打印到系统和PrintWriter

时间:2014-11-17 19:15:01

标签: java printwriter system.out

我需要打印超过100行数据和统计信息。我正在使用:

PrintWriter p = new PrintWriter(fileName);

它之所以大约100行是因为我需要打印到系统和文件(每个约50行)。有没有更短的打印方式和"美化"我的代码?

System.out.println("Prints Stats"); //To System
p.println("Prints Stats"); //To File
etc

对于打印到系统的每一行,都会打印一个与文件完全相同的行。有没有办法将两者合并或缩短?或者我只是坚持这个"丑陋",长堆印刷品?

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。

使用StringBuilder

如果你没有写大量的文字,你可以使用StringBuilder来创建你的输出,通过附加它,在里面插入东西等等,一旦它准备就绪,打印到两者pSystem.out

StringBuilder b = new StringBuilder();
b.append("Name: ").append("Susan").append("\n");
// Append more stuff to b, also insert and delete from it if you want.
System.out.print(b);
p.print(b);

编写自己的println()

如果您只使用println()方法,则可以编写自己的方法,为两个作者调用它:

private void println( String s ) {
    System.out.println(s);
    p.out.println(s);
}

即,假设p是一个字段而不是局部变量。

使用格式

您可以使用println()printf()方法,而不是使用format()。第一个参数是格式化字符串,您可以使用格式字符串在一个打印中格式化多行。例如:

System.out.printf( "Name: %s%nSurname: %s%nAge: %d%n", "Susan", "Carter", 30 );

会打印

Name: Susan
Surname: Carter
Age: 30

通过使用相同的格式字符串,您可以使用两个printf来保存许多println s:

String formatString = "Name: %s%nSurname: %s%nAge: %d%n";
Object[] arguments = { "Susan", "Carter", 30 );

p.printf( formatString, arguments );
System.out.printf( formatString, arguments );

这会将上面的三行输出打印到您的文件,然后输出到您的系统输出。