zoukankan      html  css  js  c++  java
  • Java基础之IO流

    IO流用来处理设备间数据传输,java对数据的操作是通过流的方式,而这些操作流的对象被封装在IO包中。流可以分为字符流和字节流。字符流可以设置编码方式,这就使得处理文本更加方便。

    IO常用基类

    字节流抽象基类InputStream,OutputStream。字符流抽象基类Reader,Writer。

    字符流体系

    抽象基类Writer

    共性方法:write();flush();close();append()

    子类FileWriter

    用于写入文件。该类对象一被初始化就要指定被操作的文件。write方法将数据写入流,flush方法刷新流,close刷新并关闭流。

    抽象类基类 Reader

    共性方法:read();skip();reset();ready()

    子类FileReader

    用于读取文件。对象初始化时要指定被读取的文件。read()方法将数据读入流。

    IO异常处理IOException

     
     
     
     
     
     
     
     
     
     
     
     

    流对象fw要放在try块外面声明,在内部初始化,以便在finally中能访问到;fw只有不为null时才能调用close方法,所以需要有判断。

    字符流的缓冲区

    字符流的缓冲区提高了IO的效率,需要结合流才能使用,在流的基础上对流的功能进行了增强。对应的类为BufferedReader和BufferedWriter。

    BufferedWriter

    将文本写入字符输出流,缓冲各个字符,从而提供单字符,字符数组,字符串的高效写入。所以,在创建缓冲区之前要现有流对象,只要把流对象加入构造函数,再调用缓冲区的写入方法即可。

    BufferedReader

    从字符输入流中读取文本,缓冲各个字符,从而实现字符,数组,行的高效读出。

    子类LineNumberReader

    跟踪行号的缓冲字符输出流,通过setLineNumber和getlLineNumber方法可以设置和获取当前行号。

    字节流体系

    抽象基类OutputStream

    共性方法:write();flush();close();

    子类FileOutputStream

    用于写入文件。该类对象一被初始化就要指定被操作的文件。write方法将数据写入流,flush方法刷新流,close刷新并关闭流

    抽象类基类 InputStream

    共性方法:read();skip();reset();ready()

    子类FileInputStream

    用于读取文件。对象初始化时要指定被读取的文件。read()方法将数据读入流,available()返回可以读到的字节数。

    字节流的缓冲区

    对应的类为BufferedOutputStream和BufferedInputStream

    BufferedOutputStream

    该类实现缓冲的输出流,通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,不必针对每次字节写入调用底层系统。

    BufferedInputStream

    同字符流缓冲区相同。

    读取转换流

    InputStreamReader类将字节流转换为字符流。它指定字符集来读取字节并解码成字符。为了达到高效率,可以考虑在BufferedReader内包装InputStreamReader。

    写入转换流

    OutputStreamWriter类将字符流转换为字节流。可以指定字符集来编码成字节。为了达到高效率,可以考虑在BufferedWriter内包装OutputStreamWriter。

    输入流操作时应明确源----桥梁(符节转换)----缓冲,输出流操作应明确目的------桥梁(符节转换) ------缓冲。

    Flie类

    用来将文件或文件夹封装成对象,方便对文件和文件夹操作,也可以作为参数传递给流的构造函数。

    常用方法:

    • 创建
      • createNewFile();创建新文件,如存在则返回false
      • createTempFile(prefix,suffix)静态方法,根据指定前缀后缀创建临时文件
      • mkdir();mkdirs();创建目录
    • 删除
      • delete();删除文件
      • deleteOnExit();JVM终止时请求删除此文件或目录。
    • 判断

    canExcute();canRead();canWrite();exist();isDirectory();isFile()

    • 获取信息
      • getname();getPath();getParent();getAbsolutePath();length()
      • list(dir);获取目录下文件名称数组
      • listFiles(dir);获取文件对象数组

    properties类

    该类是集合中与IO相结合的集合容器,是hashtable的子类,即具备map集合的特点,且键值对都是字符串。该类对象可以用于键值对形式的配置文件。

    • setProperties(str,str);getProperties(str)读取设置属性
    • load()加载字节流或者字符流1.6版本后
    • Set<string> stringPropertyNames()返回属性列表中的键集合

    打印流

    字节输出流PrintStream类

    作为outputStream的子类,为其他输出流添加了功能,使它们能打印各种数值表示形式。将各种数据都原样打印。可以直接操作文件,它的构造函数接受file对象,文件路径,字节输出流。

    字符输出流PrintWriter类

    它的构造函数可以接受file对象,文件路径,字节输出流outputstream,字符输出流Writer

    SequenceInputStream

    将多个输入流合并成一个输入流。

    对象的序列化

    实现堆内存中数据对象的存取,需要用到ObjectOutputStream和ObjectInputStream类来实现,也称为对象的持久化或对象的序列化。

    类通过实现接口serializable来启用它的序列化功能。类中的静态成员变量是不能被序列化的,因为静态成员变量并不在堆内存中存储,而是存储在内存方法区中。非静态成员如果加上transient关键字修饰,则也可以不被序列化。

    管道流

    通过管道流输入和输出可以直接连接,通过结合线程使用,需要用到PipledOutputStream和PipledInputStream类来实现.

    管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有输入字节。通常情况下,数据由某个线程从PipledInputStream对象读取,并由其他线程写入到对应PipledOutputStream对象中去。

    随机访问文件

    RandomAccessFile类的对象能对文件进行随机的读写操作,内部封装了byte数组,通过指针对数组操作。通过getFilePointer()获取指针位置,通过seek改变指针位置。

  • 相关阅读:
    堆表、AO表 行存列存
    PostgreSQL/PPAS CPU使用率高的排查及解决办法【转】
    GP 锁表查询
    gp 日常使用脚本
    常用gp_toolkit监控语句
    DG 参数详解
    Flask 中路由系统
    实例化Flask的参数 及 对app的配置
    Flask 中内置的 Session
    Flask中request参数
  • 原文地址:https://www.cnblogs.com/cqumonk/p/4006146.html
Copyright © 2011-2022 走看看