• 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))
  • 相关阅读:
    WPF 实现点击按钮跳转页面功能
    大数据运维工作(Linux,OGG,链路监控,Hadoop运维等)
    Java版本spring cloud + spring boot企业电子招投标系统源代码
    百度ueditor富文本插件插入视频问题汇总【必须收藏】
    bp神经网络是用来干嘛的,bp神经网络和神经网络
    (待填坑)【数据结构】笛卡尔树
    【Bootstrap】布局容器和栅格网络
    对Mysql和应用微服务做TPS压力测试
    【CV】第 13 章:用于处理图像的高级 GAN
    数据结构·顺序表
  • 原文地址:https://blog.csdn.net/u013916029/article/details/126258136