前言
java的IO通过java.io包下的类和接口来支持,包括输入输出两种流,每种流又分为字节流和字符流,
输入输出流:字节流和字符流
字节流:以字节为单位处理输入输出
字符流:以字符来处理输入输出
java7对原有io进行升级,提供了一系列全新的API放在NIO中
java对象的序列化机制
使用序列化机制能把java对象转换成二进制字节流,将java对象存储在磁盘中,或者在网络上传输java对象
java.io包下的File类
file类是文件或目录的抽象
file类的源码
public class File implements Serializable, Comparable<File> {
private static final FileSystem fs = DefaultFileSystem.getFileSystem();
private final String path;
private static enum PathStatus { INVALID, CHECKED };
private transient PathStatus status = null;
final boolean isInvalid() { if (status == null) { status = (this.path.indexOf('\u0000') < 0) ? PathStatus.CHECKED : PathStatus.INVALID; } return status == PathStatus.INVALID; }
private File(String pathname, int prefixLength) { this.path = pathname; this.prefixLength = prefixLength; }
public File(String pathname) { if (pathname == null) { throw new NullPointerException(); } this.path = fs.normalize(pathname); this.prefixLength = fs.prefixLength(this.path); } public boolean equals(Object obj) { if ((obj != null) && (obj instanceof File)) { return compareTo((File)obj) == 0; } return false; }
public int hashCode() { return fs.hashCode(this); }
}
路径分隔符:\ 转义\\
文件过滤器类FilenameFilter,是一个函数式接口,只有一个抽象方法,可以使用Lambda表达式创建实现该接口的对象
@FunctionalInterface public interface FilenameFilter {
boolean accept(File dir, String name); }