PrintStream 和 PrintWriter
# PrintStream 和 PrintWriter
我们如果想要打印数据,经常会使用 System.out.println()
;
System.out.print(12345); // 输出12345
System.out.print(new Object()); // 输出类似java.lang.Object@3c7a835a
System.out.println("Hello"); // 输出Hello并换行
2
3
其实,这也是一种 IO,只不过输出到了控制台而已,而 System.err
则是标准错误输出。
# PrintStream
PrintStream
是一种 FilterOutputStream
,它在 OutputStream
的接口上,额外提供了一些写入各种数据类型的方法:
- 写入
int
:print(int)
- 写入
boolean
:print(boolean)
- 写入
String
:print(String)
- 写入
Object
:print(Object)
,实际上相当于print(object.toString())
- ...
以及对应的一组 println()
方法,它会自动加上换行符。System.out
就是系统默认提供的 PrintStream
PrintStream
和 OutputStream
相比,除了添加了一组 print()
/println()
方法,可以打印各种数据类型,比较方便外,它还有一个额外的优点,就是不会抛出 IOException
,这样我们在编写代码的时候,就不必捕获 IOException
。
# PrintWriter
PrintStream
最终输出的总是 byte 数据,而 PrintWriter
则是扩展了 Writer
接口,它的 print()
/println()
方法最终输出的是 char
数据。两者的使用方法几乎是一模一样的。
PrintWriter
的常用方法如下:
Java.io.Printwitet
+Printwriter(file: File) 为指定的文件对象创建一个Printwriter对象
+Printwriter(filename: String) 为指定的文件名字符串创建一个PrintWriter对象
+print(s: String): void 将字符串写人文件中
+print(c: char): void 将字符写人文件中
+print(cArray: char[1): void 将字符数组写入文件中
+print(i: int): void 将一个int值写入文件中
+print(1: 1ong): void 将一个1ong值写入文件中
+print(f: float): void 将一个float值写入文件中
+print(d: double): void 将一个double值写入文件中
+print (b: boglean): void 将一个boolean值写入文件中
和print方法类似,println和printf方法也有一样的重载。
println方法和print方法类似;但是会打印一个换行符,不同操作系统下换行符不同。
printf :格式化输出
2
3
4
5
6
7
8
9
10
11
12
13
14
15
使用 PrintWriter,可以向文件中写入数据:例如向文件 score.txt 中写入两行数据的例子。每行都包括名字(字符串)、中间名字的首字母(字符)、姓(字符串)和分数(整数)。
public class WriteData {
public static void main(String[] args) throws Exception {
java.io.File file = new java.io.File("scores.txt");
if (file.exists()) {
System.out.println("File already exists");
System.exit(0);
}
// Create a file
java.io.PrintWriter output = new java.io.PrintWriter(file);
// Write formatted output to the file
output.print("John T Smith ");
output.println(90);
output.print("Eric K Jones ");
output.println(85);
// Close the file
output.close();
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
上述代码先判断文件是否存在,不存在则会自动创建一个文件并写入,如果存在则不写入(如果存在的情况下,还是写入,那么原本文件的内容就会被丢弃)
类似的,还可以向 StringWriter 中写入:
import java.io.*;
public class Main {
public static void main(String[] args) {
StringWriter buffer = new StringWriter();
try (PrintWriter pw = new PrintWriter(buffer)) {
pw.println("Hello");
pw.println(12345);
pw.println(true);
}
System.out.println(buffer.toString());
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
我们如果想要打印数据,经常会使用System.out.println()
;
System.out.print(12345); // 输出12345
System.out.print(new Object()); // 输出类似java.lang.Object@3c7a835a
System.out.println("Hello"); // 输出Hello并换行
2
3
其实,这也是一种IO,只不过输出到了控制台而已,而System.err
则是标准错误输出。
# PrintStream
PrintStream
是一种FilterOutputStream
,它在OutputStream
的接口上,额外提供了一些写入各种数据类型的方法:
- 写入
int
:print(int)
- 写入
boolean
:print(boolean)
- 写入
String
:print(String)
- 写入
Object
:print(Object)
,实际上相当于print(object.toString())
- ...
以及对应的一组println()
方法,它会自动加上换行符。System.out
就是系统默认提供的PrintStream
PrintStream
和OutputStream
相比,除了添加了一组print()
/println()
方法,可以打印各种数据类型,比较方便外,它还有一个额外的优点,就是不会抛出IOException
,这样我们在编写代码的时候,就不必捕获IOException
。
# PrintWriter
PrintStream
最终输出的总是byte数据,而PrintWriter
则是扩展了Writer
接口,它的print()
/println()
方法最终输出的是char
数据。两者的使用方法几乎是一模一样的
PrintWriter
的常用方法如下:
Java.io.Printwitet
+Printwriter(file: File) 为指定的文件对象创建一个Printwriter对象
+Printwriter(filename: String) 为指定的文件名字符串创建一个PrintWriter对象
+print(s: String): void 将字符串写人文件中
+print(c: char): void 将字符写人文件中
+print(cArray: char[1): void 将字符数组写入文件中
+print(i: int): void 将一个int值写入文件中
+print(1: 1ong): void 将一个1ong值写入文件中
+print(f: float): void 将一个float值写入文件中
+print(d: double): void 将一个double值写入文件中
+print (b: boglean): void 将一个boolean值写入文件中
和print方法类似,println和printf方法也有一样的重载。
println方法和print方法类似;但是会打印一个换行符,不同操作系统下换行符不同。
printf :格式化输出
2
3
4
5
6
7
8
9
10
11
12
13
14
15
使用PrintWriter,可以向文件中写入数据:例如向文件score.txt中写入两行数据的例子。每行都包括名字(字符串)、中间名字的首字母(字符)、姓(字符串)和分数(整数)。
public class WriteData {
public static void main(String[] args) throws Exception {
java.io.File file = new java.io.File("scores.txt");
if (file.exists()) {
System.out.println("File already exists");
System.exit(0);
}
// Create a file
java.io.PrintWriter output = new java.io.PrintWriter(file);
// Write formatted output to the file
output.print("John T Smith ");
output.println(90);
output.print("Eric K Jones ");
output.println(85);
// Close the file
output.close();
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
上述代码先判断文件是否存在,不存在则会自动创建一个文件并写入,如果存在则不写入(如果存在的情况下,还是写入,那么原本文件的内容就会被丢弃)
类似的,还可以向StringWriter中写入:
import java.io.*;
public class Main {
public static void main(String[] args) {
StringWriter buffer = new StringWriter();
try (PrintWriter pw = new PrintWriter(buffer)) {
pw.println("Hello");
pw.println(12345);
pw.println(true);
}
System.out.println(buffer.toString());
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14