IO的分类

本文介绍了Java中的IO流分类,包括输入流、输出流、字节流和字符流。详细讲解了字符流复制文本文件、标准输入输出流的使用,以及InputStreamWriter和OutputStreamWriter的转换流应用。还提到了PrintWriter的自动换行和类型输出功能。

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

一、IO流的分类
按照流向:
输入流 读取数据 FileReader 父类是Reader
输出流 写出数据 FileWriter 父类是Writer
按照数据类型:
字节流:
字节输入流 读取数据 InputStream
字节输出流 写出数据 OutputStream
字符流:
字符输入流 读取数据 Reader
字符输出流 写出数据 Writer
因为计算机底层数据存储的单位全是字节,为了方便读取多个字节才有了字符流。

二、字符流复制文本文件

FileReader fr=new FileReader("a.txt");
FileWriter fw=new FileWriter("b.txt");
//一次读写一个字符
/*int ch;
while((ch=fr.read())!=-1){
fw.write(ch);
fw.close();*/
//一次读写一个字符数组
int len;
int[] chs=new int[1024];
while(len=fr.read(chs)!=-1){
fw.write(ch,0,len);
fw.close();
}
}

三、InputStream和OutputStream(所有字节流的超类)
字节流可以不刷新数据,字符流是写到缓冲区需要刷新。
二进制文件(视频,音频,图片)只能使用字节流进行复制,文本文件俩个都可以使用,计算机中的数据底层是字节,我们可以使用字节流复制任何的文件,字符流在读取文件写文件时参考码表,码表会对字节进行合并成,有的码表俩个字节一个字符,有的三个字节合并一个字符,在合并的过程中会丢失,这时图片就打不开了。

//跟字符流大同小异
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class FileCopy {
public static void main(String[] args) throws IOException {
	FileInputStream fis=new FileInputStream("a.txt");
	FileOutputStream fos=new FileOutputStream("b.txt");
	//一次读取一个字节
//	int by;
//	while((by=fis.read())!=-1) {
//		fos.write(by);
//	}
	//一次读取一个字节数组
	int len;
	byte[] bys=new byte[1024];
	while((len=fis.read(bys))!=-1) {
		fos.write(bys,0,len);
	}
	
	fis.close();
	fos.close();

}
}

四、标准输入流和标准输出流
public static final InputStream in;字节输入流,用来读取键盘录入的数据
InputStream is=System.in;
public static final OutputStream in;字节输出流,将数据输出到命令行
五、OutputStreamWriter的概述和使用
在这里插入图片描述
问题:读取项目根目录下的a.txt,并输出到命令行
在这里插入图片描述
六、InputStreamWriter的概述和使用
问题:读取键盘录入的数据,并输出到项目根目录下的a.txt文件中
数据源:键盘录入的数据 System.in (字节流)
目的地:根目录下的a.txt文件 FileWriter (字符流)
转换流:把字节输入流转换成字符输入流

在这里插入图片描述
七、打印流PrintWriter的概述
可以自动换行
不能输出字节,但是可以输出其他任意类型
通过某些配置可以实现自动刷新,(只有调用println(),printf或者format才有用)
只能输出不能输入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值