Java io流

什么是io流

平时我们文件的上传和下载都是需要io流

电脑上的所有文件,文档,音频,图片,视频 都可以读和写

缓冲的的概念

看视频有点卡,图片加载不出来,视频暂停一下,加载缓冲一下,图片等会看,加载缓冲一下

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

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

IO的分类

输入流分为两种:

        1.字节输入流        FileInputStream

        2.字符输入流

输出流分为两种:

        1.字节输出流        FileOutputString

        2.字符输出流

简单举一个例子

package com.xxx.xxx;

import java.io.*;

public class Demo2 {
    public static void main(String[] args) throws IOException {
        //1.创建File对象
        File file = new File("c:/a/bbb/2.txt");
        //2.创建字节输入流,将2.txt扔给fis对象
        FileInputStream fis = new FileInputStream(file);
        //3.创建字节缓冲流,fis又仍给了bis,现在咱们的数据在bis中
        BufferedInputStream bis = new BufferedInputStream(fis);
        //4.声明一个缓冲数组,将bis里面的数据读取出来,赋值给这个缓冲数组
        byte[] buf = new  byte[1024*4];//4096字节
        //5.开始使用read方法进行读取数据,读取的时候使用while循环
        //如果2.txt文件中的字节数超过了4096哥字节,需要用到循环
        int length;
        //相当重要,决定咱们的数据每次读取多少
        //length实际读取的字节数
        //固定写发
        while ((length = bis.read(buf))!=-1){
            //byte数组有值以后,打印一下看看
            System.out.println("嘿嘿嘿");
            //将字节数组转为字符串
            //并没有实际意义
            System.out.println(new String(buf,0,length));
        }
        //关流
        bis.close();
        fis.close();
    }
}

一共的步骤就只有五六步,而且是固定写法

字节输出流也是这样同样的,只是方法的名字改了一下而已,用法相同

字符输入流

FileReader:

是一个阅读字符文件的便利类,是专门处理字符文件的,比如txt文件。音频视频图片

牵涉到解码,底层是字节流,但是会解码为字符。如果解码失败就意味着咱们读取失败了

一般不会使用字符流操作图片 音频 视频等,因为牵涉到解码。会出问题!!!

这是一个简单的例子

package com.xxx.xxx;

import java.io.*;

public class Demo1 {
    public static void main(String[] args) throws IOException {
        //将c盘下面的aaa文件夹下面的1.txt文件的内容 读取到Java内存中
        //和字节流一模一样
        //1.新建一个File对象
        File file = new File("c:/aaa/1.txt");
        //2.新建FileReader  对象 字符输入流
        FileReader fr = new FileReader(file);
        //3.FileRFeader没有缓冲的效果,可以加上缓冲的效果
        //杂加?BufferedReader
        BufferedReader br = new BufferedReader(fr);
        //4.字节的缓冲数组 是字节
        //字符的缓冲数组  是字符
        char[] cbuf = new char[4];//缓冲区是4个字符
        //这个方法是用的!!!
        //5.	read(char[] cbuf) 将文件内容读取到字符数组中(缓冲区)
        int length = -1;
        
        while ((length = br.read(cbuf)) != -1) {
            System.out.println(length);
            //6.将数组展示到控制台
            System.out.println(new String(cbuf, 0, length));
        }

        //7.关闭流
        br.close();
        fr.close();

    }
}

字符输入流和字符输出流的方法都是差不多的,只是方法的名字不一样了

字符输入输出流中readLine();方法是读取文件的一行一行的取直到取完为止

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值