初步学习IO流

最近复习了一些关于IO流的知识点,写下一点我了解的知识,以此巩固一下。

1,流是什么

在我们第一次接触到io流时,会有些困惑?什么是流?“流” 可以延伸到“流入”、“流出”。比如:就像一潭水通过管子流入到一户户人家里,对于“一户户人家” 水是流入,但是对于这潭水而言 水是流出 这也就是“输入流”/“输出流”。正式一点的说法就是“输入流”:程序从数据源中获取数据 ,”输出流“:将程序中的数据输出到指定的位置 。所以,个人理解 “流”就是输入/输出数据的一个统称。

2,字节流与字符流

字节流: 比如Inputstream,OutputStream,FileInputStream等这些以“字节”作为处理数据的单位。一次读入/读出8位二进制。
字符流:比如Reader,Writer,FileReader,FileWriter等是以“字符”作为处理数据的 单位。字符究其根本就是字节,字节流通过码表映射字符流。一次读入/读出16位二进制。

2.1区别 :

1,单位不同:字节流以字节为单位(8位二进制)。字符流以字符为单位(字节通过码表映射出字符)。
2,作用不同:字节流适用于所有数据类型(比如:图片、avi,文本…)。字符流只能处理字符类型数据。

3, 流的分类

按照输入/输出方向分为:输入流,输出流。
按照单元分为:字节流,字符流
按照角色分为:节点流(FileInputStream,FileOutputStream,FileReader,FileWriter),处理流。
节点流是指:与数据相连接,进行数据的读取.
处理流:通过给节点流套上一层中间流,以达到灵活、方便的处理数据的目的。

3.1处理流又分为:

1,缓冲流:BufferedInputStrean 、BufferedOutputStream、 BufferedReader、 BufferedWriter 增加缓冲功能,避免频繁读写硬盘。
2,转换流:InputStreamReader 、OutputStreamWriter实现字节流和字符流之间的转换。
3,数据流: DataInputStream 、DataOutputStream 等提供将基础数据类型进行输入/输出。

4,一些简单代码:

、、、
//使用FileInputStream,FileOutputStream进行输入数据 和输出数据

public void testInput() {

    File file = new File("src/main/java/com/person/config/person.properties");
    File copy = new File("src/main/java/com/person/config/copy/copy.txt");
    FileInputStream fileInputStream = null;
    FileOutputStream fileOutputStream = null;

    if (!copy.getParentFile().exists()) {
        copy.getParentFile().mkdirs();
    }

    try {
        fileInputStream = new FileInputStream(file);
        fileOutputStream = new FileOutputStream(copy);

        byte[] bytes = new byte[2048];
        int length = 0;

        if ((length = fileInputStream.read(bytes)) != -1) {

            // String s = new String(bytes, 0, length);
            fileOutputStream.write(bytes, 0, length);
        }
        fileOutputStream.close();
        fileInputStream.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();

    }


}

、、、
以上就是一些基本知识点,有什么问题,可以评论下告诉我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值