• 15 | 流


    1 流

    • 文件
    • 字节流
    • 字符流
    • 序列化和反序列化

    2 文件

    • 把数据存入硬盘这个行为,我们把他称之为持久化;
    • 而程序的执行,是在内存当中完成的,需要把数据从硬盘读到内存当中,再来执行;
    • 文件的分类:

    A、目录:目录的本质上也是一种文件
    B、文件:文件是用来保存数据的主体,但是没有谁规定,文件一定要有后缀

    • 路径的正确表达方式:

    A、:这种斜杠需要转义\
    B、/:这个可以直接用

    • File:new 出来的对象,只是一个对象,可以new,但是并不意味着一定存在;
    • 路径操作:

    A、绝对路径:从根目录往后找,叫绝对路径 ;
    B、相对路径:已当前文件所在的位置,作为参照,开始寻找目标 ;
    C、getPath:你给他相对路径,它就是相对路径,你给它绝对路径,那就是绝对路径 ;
    D、getAbsolutePath:获取到的绝对路径,但是…是识别不了的 ;
    E、getCanonicalPath:效果和getAbsolutePath类似,但是可以识别…
    F、以上三种方式,只是给大家了解一个文件的路径的获取方式,我们以后,大概率不会使用这种方式获取文件路径。

    • 创建文件和目录
    • 获取文件和目录

    3 文件读写

    • 读写文件需要通过IO流来读写

    A、input:已当前程序为参照,从程序外往程序里读输入流
    B、Output:以当前程序为参照,往外写叫输出流

    • 流的分类

    A、字节流:读写的是byte
    B、字符流:读写的是char

    • 流的进一步分类

    A、流
    B、缓冲流:带缓冲的流

    • 字节输出流

    A、可以一个字节一个字节的往外写
    B、需要首先获取数据的字节码
    C、输出流是覆盖,不是追加

    • 字节输入流

    A:可以一个字节一个字节的读
    B:读的字节,不会超过byte的长度
    C、读字节对文件大小没有限制

    • 字节流的缓冲流

    A、默认缓冲区大小是8192B
    B、只要是缓冲流,必须调用flush,一般来说针对输出流

    • 字符流

    A、字符输入流
    1)字符流读取,不可以直接使用input string的读取长度,因为我们读取的是char类型

    B、字符输出流
    1)一个字符由若干字节组成,所以自带缓冲区,需要调用flush
    C、缓冲字符流
    1)输出流:因为有非常优秀的缓冲区,所以不需要考虑一个字符一个字符往外写,直接写,交给缓冲区处理,缓冲区大小:8192个char(int)
    2) 输入流:可以一行一行的读

    • 二进制流

    A、作用,是读写数据
    B、读和写的顺序需要保持一致

    • 序列化和反序列化

    A、序列化:把内在中的对象,变为二进制的字节流输出 B、反序列化:把二进制流的输入,变为对象
    C、序列化的第一步:是需要指定对象为可序列化对象,以及该类的所有类成员都必须可序列化对象
    D、序列化的版本ID,在序列化和反序列化时必须保持一致

    • JDK自带的序列化和反序列化,效果不佳,在真正的大型分布式项目当中,一般使用例如:(hession(jboss))
  • 相关阅读:
    HMS Core基于地理位置请求广告,流量变现快人一步
    关于Vue中的if使用注意事项
    K8S控制器
    mysql8忘记密码如何重置(禅道的mysqlzt服务和mysql服务冲突)
    2022最新IDEA配置Maven及Tomcat--详细、简单,适合初学者
    自适应螺旋飞行麻雀搜索算法
    超标量处理器设计 姚永斌 第3章 虚拟存储器 --3.1~3.2 小节摘录
    用Vue写教务系统学生管理
    BUUCTF-ez_pz_hackover_2016
    ruoyi框架开发LOT项目
  • 原文地址:https://blog.csdn.net/u013916029/article/details/126258136