JAVA流-IO流分类

一、按照流向分

输入流: 只能从中读取数据,而不能向其写入数据。

输出流:只能向其写入数据,而不能向其读取数据。

二、按照操作单元分

字节流:是一个字节一个字节的读取或写入

字符流:是一个字符一个字符的读取或写入,一个字符就是两个字节,主要用来处理字符。

三、按照角色划分

节点流:直接从/向一个特定的IO设备(如磁盘,网络)读/写数据的流,称为节点流。

处理流:“连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能的流。

四、输入/输出流体系中常用的流的分类表

分类字节输入流字节输出流字符输入流字符输出流
抽象基类InputStreamOutputStreamReaderWriter
访问文件FileInputStreamFileOutputStreamFileReaderFileWriter
访问数组ByteArrayInputStreamByteArrayOutputStreamCharArrayReaderCharArrayWriter
访问字符串StringReaderStringWriter
缓冲流(处理)BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter
操作对象ObjectInputStreamObjectOutputStream

五、流怎么用

5.1、输入流
// InputStream本身是抽象类,我们需要使用它的子类去构造对象:
InputStream inputStream = new FileInputStream(file);

// 读一个字节
int read = inputStream.read();

// 一次性读1024个字节到那个内存数组
int read = inputStream.read(new byte[1024]);

// 从第0个字节开始读,读120个字节
int read = inputStream.read(new byte[1024],0,120);

read是一个字节一个字节的读,读到-1是结束符

InputStream inputStream = new FileInputStream("D:/code/a.txt");
int read;
while ((read =inputStream.read()) != -1){
	System.out.print(read+" ");
}
5.2、输出流

在定义文件输出流时,有两个参数,第二个如果是true代表追加文件,如果false代表覆盖文件,意思就是如果人家这个文件原来有内容,就覆盖的没了,这一点要注意。

OutputStream outputStream = new FileOutputStream("D:/code/a.txt",true);
// 一个字节一个字节的写
outputStream.write(97);
@Test
public void OuputTest() throws IOException {
    File file = new File("/E:/temp/a.txt");
    OutputStream outputStream = new FileOutputStream(file,true);
    outputStream.write("OK".getBytes(StandardCharsets.UTF_8));
}
5.3、注意的点

1、绝大部分的对IO的操作都需要处理可能出现的IO异常。

2、我们发现不管是inputStream还是outputStream都有一个close方法,IO是需要消耗系统资源的,每一个stream都需要系统分配资源,是弥足珍贵的,所以没有流一旦使用完成就一定要关闭资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LyaJpunov

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值