3.7 Java之打印流和数据流(附字符字节流练习)
程序员文章站
2022-07-13 14:50:33
...
打印流
- 属于输出流
- 分为PrintStream(字节打印流)和PrintWriter(字符打印流)
- 提供了一系列重载的print和println方法,用于多种数据类型的输出
- PrintStream和PrintWriter的输出不会抛出异常
- PrintStream和PrintWriter有自动flush功能
- System.out返回的是PrintStream的实例
实例
FileOutputStream fos = null;
try {
fos = new FileOutputStream(new File("D:\\IO\\text.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}//创建打印输出流,设置为自动刷新模式(写入换行符或字节 '\n' 时都会刷新输出缓冲区)
PrintStream ps = new PrintStream(fos,true);//字节型打印流 实例化
if (ps != null) { // 把标准输出流(控制台输出)改成文件
System.setOut(ps);//形参为打印字节流的对象}
for (int i = 0; i <= 255; i++) { //输出ASCII字符
System.out.print((char)i);//对应的ASCII码
if (i % 50 == 0) { //每50个数据一行
System.out.println(); // 换行
} }
ps.close();
- 创建字节型的打印流,缓冲流是手动刷新的,true表示自动刷新(flush)
- out是标准的输出流,默认打印到控制台上
- 默认控制台输出,重新设置位置,设置为:输出到打印流指定的文件中
数据流
- 数据流有两个类,没有对应的reader和writer,因为不是文本的
- 分为输入型的数据流和输出型的数据流
- 数据流处理的是基本数据类型,字符串和字节数组(8+2)
- 作用于节点流山,属于处理流
数据流输出
数据流输入
- 若write读取文件,输入到控制台上,呈现乱码
- 正确做法:通过数据流的输入读取信息,打印到控制台上
- 输出时,采用输出型数据流,相应地,输入时,也应采用输入型数据流,否则乱码
- 错误:用write读取基本数据类型
字符字节流练习
字节流输出
- 通过字符串转化为字节数组,从而使用字节流输出
- 未加flush(失误)
字符流输出
- 未加flush(失误)
字符流输入
- 打印到控制台上,带ln的print
- readLine与换行一定配对使用
- FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象
参数为文件路径- 等效于new file,只是封装到一起了,参数对应的还是一个file对象,本质上操作的是一个对象
字符流输入输出
- 下方代码未处理异常,自行补充
- 输出时,文件对象可不存在
- 若改成字节流输入输出,则三处改动(两个类一个数组)
总结
- 字节流通过byte数组实现
- 字符流通过char数组或readLine【write(string)】实现
- 缓冲流输出一定要flush
- 使用readline记得换行
上一篇: volatile关键字解读
下一篇: 生产者消费者问题虚假唤醒