JAVA中的IO流

流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出 。

缓冲的概念

快递:送到物流中转站,然后分批次的发。物流中转站就是缓冲的概念。

IO流 的本质就是对电脑的文件进行读和写的

计算机通过CPU内存读取磁盘上面的文件数据,一次读取1字节。但是可以加上缓冲的概念

每次读取4kb。效率会高点的,咱们可以测试一下。效率是不是确实高了。

IO流的分类

字节IO流:可以处理文本、图片、音频、视频等

字符IO流:只能处理文本

输入流: 从磁盘读取到内存

输出流:从内存写入到磁盘

输入流分为两种:

1.字节输入流 FileInputStream

2.字符输入流 FileReader

输出流分为两种:

1.字节输出流 FileOutputStream

2.字符输出流 FileWriter

操作 IO 流的模板:

1、创建源或目标对象

输入:把文件中的数据流向到程序中,此时文件是 源,程序是目标

File file = new File("d:/idea储存/aaa/盗墓笔记.txt");

输出:把程序中的数据流向到文件中,此时文件是目标,程序是源

File file1 = new File("d:/idea储存/bbb/鬼吹灯.txt");

2、创建 IO 流对象

输入:创建输入流对象

FileInputStream fis = new FileInputStream(file);

输出:创建输出流对象

FileOutputStream fos = new FileOutputStream(file1);

3、创建缓冲流:

BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);

4、具体的操作

int length = -1;
        byte[] buf = new byte[4 * 1024];
        while ((length = bis.read(buf)) != -1) {
            bos.write(buf, 0, length);
        }

5、关闭资源(先开后关,后开先关)

输入:输入流的 close() 方法

输出:输出流的 close() 方法

bos.close();
bis.close();

案例:

import java.io.*;

public class Demo1 {
    public static void main(String[] args) throws IOException {
        //将Java代码中的一个字符串写入到咱们的磁盘的某一个文件中
        //1.创建File对象,文件路径对象  告知编译器要把数据写到哪个文件中
        File file = new File("d:/aaa/2.txt");
        //2.实例化字节输出流对象
        FileOutputStream fos = new FileOutputStream(file);
        //3.对FileOutputStream  加上缓冲的效果
        //猜测一下  FileInputStream所对应的缓冲流  BufferedInputStream
        //FileOutputStream  所对应的缓冲流  BufferedOutputStream
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        //4.将一个字符串写入到磁盘中
        String str = "哈哈哈哈哈哈!!!";
        //	write(byte[] b)
        //咱们的参数是字节数组,咋办?str是一个字符串 但是参数是一个字节数组,咋解决?
        //str是字符串 不能强转  将字符串转为字节数组,没有讲过!!!
        //将str字符串转为字节数组
        byte[] bytes = str.getBytes();
        bos.write(bytes);
        //5.写完以后一定要刷新流然后关闭流
        bos.flush();//没有实际的意义,可以不写的
        //6.关闭流
        //在输入流的时候一定是先开的后关,后开的先关
        bos.close();
        fos.close();

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值