Io

Io

_

流的概念和作用

流是一组有顺序的的,有起点和终点的字节集合,是对数据传输的总称或抽象,数据在两个设备间的传输称为流,根据数据传输特性将流抽象为各种类,方便直观的进行数据操作。

Io流的分类

根据处理数据的类型不同分为:字符流和字节流。
根据数据流向分为:输入流和输出流。

字节和字符流

字符流的由来:因为数据编码的不同,因而有了对字符进行高效操作的流对象。本质就是基于字符读取时,去查了指定的码表,

字节和字符流的区别:

  1. 读取单位不同:字节流以字节为单位(8bit),字符流以字符为单位,根据码表映射字符,一次可读取多个字符。
  2. 处理对象不同:字符流能处理所有的数据类型,而字符流只能处理字符类型的数据。
  3. 字节流在操作的时候,本身是不会用到缓存区的,是文件本身直接操作的;而字符流在操作的时候下面会用到缓存区,是通过缓存区来操作文件,

输入流和输出流

对于输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据传输数据的特性进行选择而使用不同的流。

java流类结构图.png

Io流体系图

io流体系图.jpg

案例

文件拷贝

public class FileCopy {
    public static void main(String[] args) {
        FileInputStream fis=null;
        FileOutputStream fos=null;
        try {
            File file = new File("F://图片//preview.jpg");
            //创建文件输入流读取文件
           fis = new FileInputStream(file);
            //创建文件输出流 
            fos = new FileOutputStream(new File(file.getName()));
            //创建缓冲字节数组   获取文件大小 创建一样大小的数组,一次读取
            byte  [] b = new byte[(int) file.length()];
            while(fis.read(b)!=-1){
                fos.write(b);
            }
            System.out.println("copy:  "+file.getName()+"完毕!");
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (fos!=null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fis!=null){
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

GUI编程 2021-01-07
Docker 2021-01-11

评论区