• 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))
  • 相关阅读:
    vscode在ubuntu调试
    7.pandas缺失值处理(表格数据处理)
    WPS文件找回怎么做?文件恢复,4个方法!
    Java 基于微信小程序的农产品自主供销小程序
    latex左侧大括号 latex中大括号多行公式
    GEE错误——Tile error: Arrays must have same lengths on all axes but the cat axis
    抓住那头牛——BFS
    C++制作游戏引擎之一 方向键控制地球上下左右乱跑
    前端vue路由模块拆分归类【理解版】
    我的Go+语言初体验——祝福留言小系统,让她也可以感受到你的祝福
  • 原文地址:https://blog.csdn.net/u013916029/article/details/126258136