【Kilav】 JAVA知识点速通 文件和流

一 流

流(stream)是一个信息的逻辑实体, 指的是从数据源读取的,或者写入目标对象的有序数据。

  • 字节流/字符流
    • 字符流:操作的数据单元是16bit的字节(基类时Reader和Writer),它以字符顺序存储数据。
    • 字节流:操作的数据单元是8bit的字节(基类是InputStream和OutputStream),它以二进制格式存储数据。
  • 节点流/处理流
    • 节点流:可以从/向一个特定的IO设备中读/写数据的流,也被称为低级流。处理流:用于对一个已存在的流进行连接或封装来实现读/写功能,也称为高级流或包装流。

二  文件

  • 二进制文件/文本文件
    • 基于字符的流创建的文件,称为文本文件。
    • 基于字节的流创建的文件,称为二进制文件。

  • 读取
    • 文本方式比如ASCII码形式解释,就把读到的二进制流每8bit翻译,存储是反过程
    • 如果按照二进制的方式打开,则没有任何编码解码的过程。

三  步骤

    • 用到包 Java.io
    • 用到类 File
      • 每个File对象表示一个磁盘文件或者目录
      • 属性包含文件信息
      • 方法获取路径 目录 文件信息
      • 构造
      • 方法
    • 创建文件
    • 创建流
      • InputStream/OutputStream
        • 字节流
        • 抽象类 无法直接用

四  对象序列化

对象序列化(Serialize)是指将一个Java对象写入IO流中

    • 对象反序列化(Deserialize)是指从IO流中恢复该Java对象
    • 序列化必须实现Serializable和Externalizable接口
    • 需要序列号的场景
      • 至少有下面两种场景需要序列化: 远程方法调用 (RMI)——通过socket进行对象的复制和通讯等
      • 程序版本升级问题

五  带缓冲的数据流

  • 大大提高读写速率
    • 构造函数
      • BufferedInputStream(InputStream in)BufferedInputStream(InputStream in,int size)
      • BufferedOutputStream(OutputStream out)BufferedOutputStream(OutputStream Out,int size)
      • 其中size分别指定输入输出缓冲区的大小,默认缓冲区的大小为512个字节。最佳缓存大小高度依赖于机器平台以及输入/输出的数据大小
    • 将输出数据暂时存在内存

六  基于字符流的文件操作

  • Unicode
    • FileWriter创建一个可以写文件的Writer 类,常用的构造函数如下:FileWriter(String filePath)  FileWriter(String filePath, boolean append)FileWriter(File fileObj)
    • FileReader类创建了一个可以读取文件内容的Reader类,常用的构造函数如下:FileReader(String filePath)FileReader(File fileObj)

七  随机文件读写

  • Unicode
    • FileWriter创建一个可以写文件的Writer 类,常用的构造函数如下:FileWriter(String filePath)  FileWriter(String filePath, boolean append)FileWriter(File fileObj)
    • FileReader类创建了一个可以读取文件内容的Reader类,常用的构造函数如下:FileReader(String filePath)FileReader(File fileObj)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值