zoukankan      html  css  js  c++  java
  • 编程体系结构(04):JavaIO流文件管理

    本文源码:GitHub·点这里 || GitEE·点这里

    一、IO流分类

    1、分类角度

    流的方向

    • 输入流:从数据源中读取数据到应用中的流;
    • 输出流:从应用中将数据写入到目的地的流;

    流数据类型

    • 字节流:以字节形式来读写的流,标识是名称以Stream结尾;
    • 字符流:以字符形式来读写的流,标识是名称以Writer、Reader结尾;
    • 管道流:以数据块为单位来处理,缓冲区就是用于读写的数据块;

    流的角色

    • 节点流:可以从一个节点或者向一个节点读/写数据的流,也被称为低级流;
    • 处理流:对存在的流进行连接或者封装、封装后的流来进行读/写、也被称为高级流。

    2、API体系

    5个核心类ObjectOutputStream:File、OutputStream、InputStream、Writer、Reader;

    1关键接口:Serializable;

    二、API细节分类

    1、字节输入流

    InputStream:字节输入流是所有字节输入流的父类、为所有字节输入流提供一个标准、和基本的与读取字节有关的方法及简单的实现。

    FileInputStream:文件字节输入流以字节的形式将文件中数据读取到应用中;

    BufferedInputStream:缓冲字节输入流,提供缓冲功能,提高效率;

    ByteArrayInputStream:字节数组输入流用于读取其内置缓存字节数组中的字节;

    PipedInputStream:管道字节输入流必须与PipedOutputStream结合使用,用于线程之间的通信;

    FilterInputStream:过滤器字节输入流,重写InputStream方法,为字节输入处理流提供扩展;

    DataInputStream:数据字节输入流,一般与DataOutputStream结合使用;

    ObjectInputStream:对象字节输入流,与ObjectOutputStream结合使用;

    2、字节输出流

    OutputStream:字节输出流,InputStream作用一样,为所有字节输出流提供一个标准、定义了一些基本输出字节的方法与简单实现;

    FileOutputStream:文件字节输出流,将字节写入指定目标的文件源中;

    BufferedOutputStream:缓冲字节输出流,提供缓冲功能、提高效率;

    ByteArrayOutputStream:字节数组输出流,将字节写入到其本身所带的一个内置缓存字节数组中;

    PipedoutputStream:管道字节输出流,必须与PipedInputStream结合使用、用于线程之间的通信;

    FilterOutputStream:过滤字节输出流,为字节输出处理流提供扩展;

    DataOutputStream: 数据字节输出流,一般与DataInputStream结合使用;

    ObjectOutputStream:对象字节输出流,通常与ObjectInputStream结合使用;

    PrintStream:字节打印流,字节输出流进行装饰、提供打印各种数据类型的功能;

    3、字符输入流

    Reader:字符输入流,为所有字符输入流提供一个标准、只有基本的读取方法的定义和简单的实现;

    InputStreamReader:字节转换流,将字节流转换成字符流,并且可以指定字节转成字符时使用的编码;

    BufferedReader:缓冲字符输入流,为字符输入流提供缓冲功能、提高效率;

    CharArrayReader:字符数组输入流,将其内置字符缓存数组中的数据读取到应用中;

    PipedReader:管道字符输入流,与PipedWriter结合使用、用于线程之间的通信;

    FilterReader:过滤字符输入流,为字符输入流提供扩展;

    FileReader:文件字符输入流,字符的形式读取文件中的内容;

    4、字符输出流

    Writer:字符输出流,所有字符输出流提供一个标准,基本写入的方法和简单的实现;

    OutputStreamWriter:字节输出转换流,用于将字节输出流转化成字符输出流。可以指定编码转化;

    BufferedWriter:缓存字符输出流,提供缓冲功能、提高效率;

    CharArrayWriter:字符输出流,用于将字符写入其内置缓存字符数组中;

    PipedWriter:管道字符输出流,与PipedReader结合使用,用于线程之间的通信;

    FileWriter:文件字符输出流,用于将字符写入到指定文件中;

    PrintWriter:字符打印流,将各种数据以字符的形式打印;

    三、File文件类

    1、构造方法

    File(String pathname):指定文件或者文件夹的路径创建一个File文件;

    File(File parent,String child):根据parent抽象路径名和child路径名字符创建新的File实例;

    2、路径问题

    绝对路径:该文件在硬盘上的完整路径。绝对路径一般都是以盘符开头的。

    相对路径: 相对路径就是资源文件相对于当前程序所在的路径。

    . 当前路径

    .. 上一级路径

    3、文件的创建

    createNewFile():在指定位置创建一个空文件,成功返回true,已存在就不创建然后返回false;

    mkdir():在指定位置创建目录,这只会创建最后一级目录,上级目录不存在就抛异常;

    mkdirs():在指定位置创建目录,这会创建路径中所有不存在的目录;

    4、删除文件

    delete() 删除文件或者一个空的文件夹,如果文件夹且不为空,则不能删除,成功返回true,失败返回false;

    5、判断方法

    exists():文件或文件夹是否存在;

    isFile():是否是一个文件,如果不存在,则始终为false;

    isDirectory():是否是一个目录,如果不存在,则始终是false;

    6、获取文件信息

    getName():获取文件或文件夹名称,不包含上级路径;

    getPath():返回绝对路径,可以是相对路径,但是目录要指定

    四、编码解码

    字节流读取的是文件中的二进制数据,不会自动转为可以看懂的字符;字符流:把读到的数据进行对应的编码与解码。

    五、源代码地址

    GitHub·地址
    https://github.com/cicadasmile
    GitEE·地址
    https://gitee.com/cicadasmile
    

    推荐阅读:编程体系整理

    序号 项目名称 GitHub地址 GitEE地址 推荐指数
    01 Java描述设计模式,算法,数据结构 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
    02 Java基础、并发、面向对象、Web开发 GitHub·点这里 GitEE·点这里 ☆☆☆☆
    03 SpringCloud微服务基础组件案例详解 GitHub·点这里 GitEE·点这里 ☆☆☆
    04 SpringCloud微服务架构实战综合案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
    05 SpringBoot框架基础应用入门到进阶 GitHub·点这里 GitEE·点这里 ☆☆☆☆
    06 SpringBoot框架整合开发常用中间件 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
    07 数据管理、分布式、架构设计基础案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
    08 大数据系列、存储、组件、计算等框架 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
  • 相关阅读:
    关于linux curl 地址参数的问题
    mac系统安装php redis扩展
    Shell获取上一个月、星期的时间范围
    python redis使用
    python pycurl模块
    Memcached常规应用与分布式部署方案
    mysql忘记密码重置(mac)
    shell命令从目录中循环匹配关键词
    python两个文件的对比
    MySQL优化方案
  • 原文地址:https://www.cnblogs.com/cicada-smile/p/13745636.html
Copyright © 2011-2022 走看看