Java IO整理

  1.文件操作

    获取File 对象( File file = new File(path); )之后,可以创建文件,创建文件夹,销毁文件,判断是否为目录,得到该路径下的所有文件。

    file.createNewFile();          //创建文件

    file.mkdir();                         //创建文件夹

    file.delete();                        //实时销毁

    file.deleteOnExit();              //当jvm终止时,被执行销毁

    file.isDirectory();                 //判断是否为目录

    File files = file.listFiles();       //得到该路径下的所有文件,返回的是File数组,得到完整路径

    String files = file.list();        //得到的是所有文件,返回String数组,不是完整路径。

  2.输入输出流

    接口: DataInput, DataOutput, ObjectInput, ObjectOutput

    字节流:继承InputStream, OutputStream抽象类,输入流中与数据源有直接接触的类有FileInputStream, 和ByteArrayInputStream, 其他都是装饰类(Decorator模式)

      FileInputStream

      PipedInputStream(允许以管道的方式来处理流):PipedInputStream和PipedOutStream类用于在应用程序中创建管道通信。一个PipedOutputStream必须与一个PipedInputStream连接建立一个通信管道,PipedOutputStream可以向管道中写入数据,PipedInputStream可以从管道中读取PipedOutputStream写入的数据。这两个类主要用来完成线程之间的通信。一个线程的管道输入流可以从另一个线程的管道输出流中读取数据。使用管道流类,可以实现各个程序模块之间的松耦合通信。

  1.   ByteArrayInputStream:主要将内容写入内存,内存操作流

      FilterInputStream

      DataInputStream(允许程序以与机器无关的方式从底层输入流中读取基本java数据类型)

      BufferedInputStream(提供缓冲功能)

      PushbackInputStream:允许放回已经读取的数据 内部生成一个buff, 每次调用unread 就将参数buff里的东东加入到buff里,然后每次调read时,如果buff里有东西,就返回buff里的东西.否则从inputstream里读.注意:push back buff不会自动填充read的东西,而是需要显示调用unread来的填充).

      SequenceInputStream: 能对多个inputstream进行顺序处理。new SequenceInputStream(input1, input2);

    提供重要的方法

    a.  read() // 返回读的下一个字节。

    b.  read(byte[] b);  //返回读入缓冲区的总字节数。

    c.  read(byte[] b, int off, int len); //读取的字节数 int

    

    字符流:Reader, Writer(以16位的Unicode表示的字符为基本处理单位)

      a.  FileReader

      b.  PipedReader

      c.  CharArrayReader

      d.  FilterReader

      e.  StringReader

      f.   BufferedReader

    提供方法

        1write(char[] cbuf);

        2write(char[] cbuf, int off, int len);

        3write(int c); //将指定的字节写入此输出流。write 的常规协定是:向输出流写入一个字节。要写入的字节是参数 b 的八个低位。b 的 24 个高位将被忽略

        4write(String str);

    对象流: ObjectInputStream, ObjectOutputStream

    文件处理:RandomAccessFile

    字节流和字符流的区别:

      字节流在操作时,本身不会用到缓冲区的,是文件本身直接操作的。但是字符流在操作的时候,是会用到缓冲区的,是通过缓冲区来操作文件的。

    OutputStreramWriter 和InputStreamReader类,字符和字节转换流。(OutputStreramWriter将输出的字符流转化为字节流,InputStreamReader将输入的字节流转换为字符流)

    对象的序列化

原文地址:https://www.cnblogs.com/chenyao/p/2995222.html