字节流和字符流

首先我们需要了解输入输出的概念,然后输入输出的这一个过程可以理解为流,即读取一点数据处理一点数据。字节流和字符流则可以理解为流读取输出的方式。

输入输出

输入:把电脑硬盘上的数据读取到程序中,称为输入,即input,进行数据的read。

按数据的传输方向可以称为输入流

输出: 从程序往外部设备写数据 ,进行数据的write操作。

按数据的传输方向可以称为输出流

字节流

 InputStream和OutputStream的子类都是字节流 可以读写二进制文 件,主要处理音频、图片、歌曲、字节流,处理单元 为1个字节。

  字节流常用类
  • 字节输入流 FileInputStream

1.【int】read()方法:读取一个字节并以ascll值的整数形式返回,如果读取到输入流的末尾则返回-1;

2.【int】read(byte []bytes): 读取一系列字节并存储到一个数组buffer, 返回实际读取的字节数,如果读取前已到输入流的末尾返回-1;

3.【void】close()方法:关闭流释放内存资源;

  • 字节输出流 FileOutputStream

1.【void】 write(int b):向输出流中写入一个字节数据,该字节数据为参数b的低8位 

2.【void】 write(byte[] b, int off, int len): 将一个字节类型的数组中的从指定位置(off)开始的 len个字节写入到输出流

3.【void】 close(): 关闭流释放内存资源

方法的使用

 public static void main(String[] args) throws IOException {
        //创建一个输入流的对象
        FileInputStream in=new FileInputStream("D:/a.txt");
        FileOutputStream out=new FileOutputStream("D:/a1.txt");
        // 每次读取一字节比较慢
        int t=0;
        while ((t=in.read())!=-1){//t储存读取字符的ascll值
            System.out.println(t);
            out.write(t);
        }

        //每次读取更多字节
        byte []bytes=new byte[10];
        int size=0;
        while ((size=in.read(bytes))!=-1)//用size接受每一次读取bytes的大小
        {
            System.out.println(size);
            out.write(bytes,0,size);//输出bytes的内容,从0索引开始,创造大小为size的新文件。
        }

        //关闭流对文件的占用
        in.close();
        out.close();
    }

字符流

Reader和Writer的子类都是字符流 主要处理字符或字符串,字符流处 理单元为1个字符。 字节流将读取到的字节数据,去指定的编码表中获取 对应文字字符。

  • 字符输入流 FileReader

1.【int】 read() :读取一个字符并以整数的形式返回, 如果返回-1已到输入流的末尾。

2.【int】 read( char[] cbuf):  读取一系列字符并存储到一个数组buffer, 返回实际读取的字符数,如果读取前 已到输入流的末尾返回-1

3. 【void】 close():关闭

  • 字符输出流 FileWrite

1.【void】 write(int c):向输出流中写入一个字符数据,该字节数据为参数b的16位

2.【void】 write( char[] cbuf):一个字符类型的数组中的数据写入输出流

3.【void】 write( char[] cbuf, int off set, int length):将一个字符类型的数组中的从指定位置(off set)开始的 length个字符写入到 输出流

4.【void】 close():关闭

方法的使用

        //字符流
        FileReader reader=new FileReader("D:/a.txt");
        FileWriter writer=new FileWriter("D:/a2.txt");

        char[] chars=new char[10];
        int size=0;
        while((size= reader.read(chars))!=-1)
        {
            writer.write(chars,0,size);
        }
        reader.close();
        writer.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值