我需要打印超过100行数据和统计信息。我正在使用:
PrintWriter p = new PrintWriter(fileName);
它之所以大约100行是因为我需要打印到系统和文件(每个约50行)。有没有更短的打印方式和"美化"我的代码?
System.out.println("Prints Stats"); //To System
p.println("Prints Stats"); //To File
etc
对于打印到系统的每一行,都会打印一个与文件完全相同的行。有没有办法将两者合并或缩短?或者我只是坚持这个"丑陋",长堆印刷品?
答案 0 :(得分:1)
有几种方法可以做到这一点。
使用StringBuilder
如果你没有写大量的文字,你可以使用StringBuilder
来创建你的输出,通过附加它,在里面插入东西等等,一旦它准备就绪,打印到两者p
和System.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 );
这会将上面的三行输出打印到您的文件,然后输出到您的系统输出。