【Think in java读书笔记】IO系统

一.FIle类(处理文件目录问题)

  • if else的另外一种写法
  • ,不加大括号也可以
import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;

/**
 * @Author:Bixinkun
 * @Descripition:遍历查看相应的目录列表
 * @Date:Created in 2018-02-23 9:38
 */
public class TestIO {
    public static void main(String[] args) {
        File path = new File(".");//找到特定的路径名
        System.out.println("--------" + path.getAbsolutePath());// 得到绝对路径
        // File path = new File("\"); 表示路径取到 C:
        // File path = new File("."); 表示路径取到 C:UsersxkDesktopssm02.当前路径下
        String[] list;
        if (args.length == 0) {//args.length 不是 一直都是空的么??什么情况下才不是空的
            list = path.list();
        } else
            list = path.list(new TestIOFilter(args[0]));

        Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);//按字母顺序排序
        for (String dirItem : list) {
            System.out.println(dirItem);
            // .git .idea  log  out pom.xml src ssm02.iml target
        }
    }
}

class TestIOFilter implements FilenameFilter { //这个类存在的意义???
    private Pattern pattern;

    public TestIOFilter(String regex) {
        pattern = Pattern.compile(regex);
    }

    public boolean accept(File dir, String name) {
        return pattern.matcher(name).matches();
    }
}

 二.输入和输出

流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象。(流屏蔽了实际的IO设备中处理数据的细节)

1.任何自Inputstream或Reader派生而来的类都含有名为reader()的基本方法,用于读取单个字节或者字节数组,同样,任何自outputStream或writer派生而来的类都含有名为writer()的基本方法,用于写单个字节或者字节数组。

2.InputStream类型

ByteArrayInputStream

StringBufferInputStream

FileInputStream

PipedInputStream

SequenceInputStream

FilterInputStream{

DataInputStream

BuffereredInputStream

LineNumberInputStream

PushbackInputStream

}

3.OutputStream类型

ByteArrayOutputStream

FileOutputStream

PipedOutputStream

FilterOutputStream{

DataOutputStream

PrintStream

BufferedOutputStream

}

原文地址:https://www.cnblogs.com/miaoww/p/8462183.html