JAVA IO笔记

File - 文件类

File:是文件和目录路径名的抽象表示
File只关注文件本身的信息,而不能操作文件里面的内容
File类 -- 表示文件或文件夹,不能对文件里的数据进行操作
对文件里的数据进行操作的是:IO流

IO流

含义:
    I - in -- 输入
    O - out -- 输出
    流 - 一点点的传输
    注意:站在程序的角度
    
流的分类:
    按照方向分:输入流、输出流
    按照单位分:字节流、字符流
    按照功能分:基础流/节点流、处理流
    注意:处理流往往是包含了基础流,使得流的功能更加强大(处理流 xxx = new 处理流(new 基础流()))
    
计算机存储进制:
    1024Kb = 1Mb
    1024Mb = 1Gb
    1024Gb = 1Tb
    1024Tb = 1Pb

学习方案:流与流之间的继承关系
学习路线:按照流的发展历史

字节流:
应用场景:操作二进制数据(图片、音频、视频)
    class abstract InputStream  -- 字节输入流的基类(抽象类)
    class abstract OutputStream -- 字节输出流的基类(抽象类)
    
    FileInputStream extends InputStream --- 文件字节输入流 
    FileOutputStream extends OutputStream - 文件字节输出流
    
    FilterInputStream extends InputStream --- 过滤器字节输入流
    FilterOutputStream extends OutputStream - 过滤器字节输出流
    
    BufferedInputStream extends FilterInputStream --- 带有缓冲区的字节输入流
    BufferedOutputStream extends FilterOutputStream - 带有缓冲区的字节输出流
    缓冲区大小:8192字节
    
字符流:
应用场景:操作文本数据
    class abstract Reader -- 字符输入流的基类(抽象类)
    class abstract Writer -- 字符输出流的基类(抽象类)

    InputStreamReader extends Reader -- 字符输入转换流
    OutputStreamWriter extends Writer - 字符输出转换流
    作用:将字节流 -> 字符流
    
    FileReader extends InputStreamReader -- 文件字符输入流
    FileWriter extends OutputStreamWriter - 文件字符输出流
    
    BufferedReader extends Reader -- 带有缓冲区的字符输入流
    BufferedWriter extends Writer -- 带有缓冲区的字符输出流
    缓冲区大小:8192字符
    
各种流:
    对象流:
        ObjectInputStream -- 对象输入流
        ObjectOutputStream - 对象输出流
        作用:将对象写入到文件里,从文件中读取出对象
        
        序列化 - 钝化:程序中的对象写入到文件中
        反序列化 - 活化:文件中的对象读取到程序中
        
        注意:
            1.写入对象所属的类必须实现Serializable(序列化接口)
            2.Serializable接口并没有让实现类实现任何的抽象方法,这种接口叫做标记型接口
            3.该类必须添加序列化ID
            4.transient修饰该属性,该属性不会随着对象而写入到文件中
            5.static修饰该属性,该属性不会随着对象而写入到文件中
            
    打印流:(方向:程序->文件)
        PrintStream -- 字节打印流
        PrintWriter -- 字符打印流
        
        PrintStream vs PrintWriter
        PrintStream: 将字节流转成打印流
        PrintWriter: 将字节流、字符流转成打印流
        
        重定向:重新定义系统标准输入输出流的方向
        
        System.in --> InputStream :控制台 -> 程序
        System.setIn() 重定向后:文件 -> 程序
        
        System.out --> PrintStream :程序 -> 控制台
        System.setOut() 重定向后:程序 -> 文件
        
        System.err --> PrintStream :程序 -> 控制台
        System.setErr() 重定向后:程序 -> 文件
    
    随机访问流:
        含义:该流认为文件是一个大型的byte数组,有一个隐藏的文件指针,指针指向哪,就可以从哪开始读取或写入
        模式:
            r - 读
            rw - 读写
    
    内存流:
        ByteArrayInputStream --- 内存输入流
        ByteArrayOutputStream -- 内存输出流
        注意:内存流是关闭不掉的,你没有权限关闭程序到内存之间的通道
        应用场景:当项目中有一些数据不算很重要,但是需要频繁使用,就可以将数据通过内存流存储在对象中


    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值