• Java基础第二十六天总结——IO流


    目录:

    一、File类的使用

    二、IO流原理及流的分类

    三、节点流(或文件流)

    四、缓冲流

    五、转换流

    六、标准输入、输出流

    七、打印流

    八、数据流

    九、对象流

    十、随机存取文件流

    十一、NIO.2中Path、Paths、File类的使用

    /*---------------------分割线-----------------------*/

    一、File类的使用

    File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
    想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
    File对象可以作为参数传递给流的构造器
    public File(String pathname)
    以pathname为路径创建File对象,可以是绝对路径或者相对路径
    绝对路径:是一个固定的路径,从盘符开始
    相对路径:是相对于某个位置开始
    public File(String parent,String child)
    以parent为父路径,child为子路径创建File对象。
    public File(File parent,String child)
    根据一个父File对象和子文件路径创建File对象

    路径分隔符:

     windows和DOS系统默认使用“”来表示
     UNIX和URL使用“/”来表示

    常用方法:

    File类的获取功能
     public String getAbsolutePath():获取绝对路径
     public String getPath() :获取路径
     public String getName() :获取名称
     public String getParent():获取上层文件目录路径。若无,返回null
     public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
     public long lastModified() :获取最后一次的修改时间,毫秒值
     public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
     public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组
     
    File类的重命名功能
     public boolean renameTo(File dest):把文件重命名为指定的文件路径
    File类的判断功能
     public boolean isDirectory():判断是否是文件目录
     public boolean isFile() :判断是否是文件
     public boolean exists() :判断是否存在
     public boolean canRead() :判断是否可读
     public boolean canWrite() :判断是否可写
     public boolean isHidden() :判断是否隐藏
    File类的创建功能
     public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false
     public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。
    如果此文件目录的上层目录不存在,也不创建。
     public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建
    注意事项:如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目
    路径下。
    File类的删除功能
     public boolean delete():删除文件或者文件夹
    删除注意事项:
    Java中的删除不走回收站。
    要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录

    二、IO流原理及流的分类

    流的分类
    按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)
    按数据流的流向不同分为:输入流,输出流
    按流的角色的不同分为:节点流,处理流

     

    InputStream 和 Reader 是所有输入流的基类。
    OutputStream & Writer
    OutputStream 和 Writer 也非常相似:
     void write(int b/int c);
     void write(byte[] b/char[] cbuf);
     void write(byte[] b/char[] buff, int off, int len);
     void flush();
     void close(); 需要先刷新,再关闭此流

    三、节点流(或文件流)

    在写入一个文件时,如果使用构造器FileOutputStream(file),则目录下有同名文
    件将被覆盖。
     如果使用构造器FileOutputStream(file,true),则目录下的同名文件不会被覆盖,
    在文件内容末尾追加内容。
    在读取文件时,必须保证该文件已存在,否则报异常

    四、缓冲流

    缓冲流要“套接”在相应的节点流之上,根据数据操作单位可以把缓冲流分为:
    BufferedInputStream 和 BufferedOutputStream
    BufferedReader 和 BufferedWriter

    五、转换流

    Java API提供了两个转换流
     InputStreamReader:将InputStream转换为Reader
     OutputStreamWriter:将Writer转换为OutputStream
     

    六、标准输入、输出流

    System.in和System.out分别代表了系统标准的输入和输出设备

    七、打印流

    实现将基本数据类型的数据格式转化为字符串输出
    打印流:PrintStream和PrintWriter

    八、数据流

    为了方便地操作Java语言的基本数据类型和String的数据,可以使用数据流。
    数据流有两个类:(用于读取和写出基本数据类型、String类的数据)
     DataInputStream 和 DataOutputStream
     分别“套接”在 InputStream 和 OutputStream 子类的流上
    DataInputStream中的方法
    boolean readBoolean()
    byte readByte()
    char readChar()
    float readFloat()
    double readDouble()
    short readShort()
    long readLong()
    int readInt()
    String readUTF() void readFully(byte[] b)
    DataOutputStream中的方法
     将上述的方法的read改为相应的write即可。

    九、对象流

    ObjectInputStream和OjbectOutputSteam
     用于存储和读取基本数据类型数据或对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。
    ObjectOutputStream和ObjectInputStream不能序列化static和transient修饰的成员变量

    十、随机存取文件流

    long getFilePointer():获取文件记录指针的当前位置
    void seek(long pos):将文件记录指针定位到 pos 位置

    流的基本应用小结:

    流是用来处理数据的。
     处理数据时,一定要先明确数据源,与数据目的地
     数据源可以是文件,可以是键盘。
     数据目的地可以是文件、显示器或者其他设备。
     而流只是在帮助数据进行传输,并对传输的数据进行处理,比如过滤处理、转换处理等
     
    十一、NIO.2中Path、Paths、Files类的使用
    NIO将以更加高效的方式进行文件的读写操作。
    Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。
     
    Paths 类提供的静态 get() 方法用来获取 Path 对象:
    static Path get(String first, String … more) : 用于将多个字符串串连成路径
    static Path get(URI uri): 返回指定uri对应的Path路径
     
     
     
     
     
  • 相关阅读:
    maven引入tomcat插件
    Maven更新jdk1.7
    ehcashe
    response的json
    ajax
    180411
    清空select标签中option选项
    jackson
    ajax
    mysql主从
  • 原文地址:https://www.cnblogs.com/zhoutie170821/p/12063933.html
Copyright © 2020-2023  润新知