3.7 Java之打印流和数据流(附字符字节流练习)

本文介绍了打印流和数据流的基本概念及应用实例,包括PrintStream和PrintWriter的使用方法,以及数据流处理基本数据类型的特点。同时,还探讨了字符字节流的练习案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

#打印流

  • 属于输出流
  • 分为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记得换行
  • 输出和输入的概念是相当于内存与文件交互而言,从内存角度为本我来出发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值