menu

Java IO Notes

Posted on 18/02/2019

IO

File

  • File 类是IO包中唯一代表磁盘文件本身的对象,定义了一些与平台无关的方法操作文件。通过调用各种方法完成文件(夹)的创建、删除、重命名、判读读写权限、查询日期等操作。

  • 遍历目录:

    public void recurseDirs(File startDir, String regex){
        /*
         * list() 方法返回字符数组
         * listFiles() 方法返回 File 数组
         */
        for(File item : startDir.listFiles()){
            if(item.isDirectory()){
                recurseDirs(item);
            }else{
                if(item.getName().matches(regex))
                    System.out.println(item);
            }
        }
    }
    
  • FileNameFilter

    public interface FileNameFilter{
        boolean accept(File dir, String name);
    }
    

    File 类的 list() 方法传入 FileNameFilter 对象,选择满足条件的文件。 FileNameFilter 类中的 accept() 方法的 File 参数指某个文件所处的文件夹对象,String 则指该文件的文件名。accept() 方法返回 true 则包含该文件,否则排除。

    这是一种策略模式。

  • 其他

IO的分类

根据文件流的输入、输出类型,字节流、字符流,Java IO中常用的IO流可做如下分类:

StreamType ByteBased CharBased
Input Output Input Output
Basic InputStream OutputStream Reader InputStreamReader(adapter) Writer OutputStreamWriter(adapter)
Arrays ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter
Files FileInputStream RandomAccessFile FileOutputStream RandomAccessFile FileReader FileWriter
Pipes PipledInputStream PipledOutputStream PipledReader PipledWriter
Buffering BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter
Filtering FilterInputStream FilterOutputStream FilterReader FilterWriter
Parsing PushbackInputStream StreamTokenizer / PushbackReader LineNumberReader /
Strings / / StringReader StringWriter
Data DataInputStream DataOutputStream / /
Data-Formatted / PrintStream / PrintWriter
Objects ObjectInputStream ObjectOutputStream / /
Utilites SequenceInputStream /
  • 字节流的继承关系图

    img

    img

  • 字符流的继承关系图

    img

    img

Top