资料参考:http://www.cnblogs.com/shitouer/archive/2012/12/19/2823641.html
- 如何访问文件与目录
- 如何以二进制格式和文本格式读写数据
- 对象序列化,如何使存储对象就像存储文本和数值数据一样容易
- 正则
如何以二进制格式和文本格式读写数据
> 1. 处理的数据单位不同,可分为:字符流,字节流 > 2.数据流方向不同,可分为:输入流,输出流 > 3.功能不同,可分为:节点流,处理流
节点流:节点流从一个特定的数据源读写数据。即节点流是直接操作文件,网络等的流,例如FileInputStream和FileOutputStream,他们直接从文件中读取或往文件中写入字节流。
处理流:“连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能。过滤流是使用一个已经存在的输入流或输出流连接创建的,过滤流就是对节点流进行一系列的包装。例如BufferedInputStream和BufferedOutputStream,使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率,以及DataInputStream和DataOutputStream,使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。他们都属于过滤流。
如何访问文件与目录
Path接口和File类封装了在用户机器上处理文件系统的所有功能
Path指的是文件的文件的相对/绝对路径,其方法定义了对文件路径及文件名的操作,不涉及文件内容。
package java.nio.file
public final class Paths {
private Paths() { }
public static Path get(String first, String... more){……}
public static Path get(URI uri){……}
}
public interface Path extends Comparable<Path>, Iterable<Path>, Watchable
{
Path toAbsolutePath();
Path getFileName();
Path toRealPath(LinkOption... options) throws IOException;
……
}
Files 配合path,可以使得普通文件的操作变得简单:
- 读写中等长度的文本文件(其他情况适合用流进行处理)
- 创建文件和目录
- 获取文件信息
- 迭代目录中的文件
package java.nio.file
public final class Files {
private Files() { }
public static FileStore getFileStore(Path path) throws IOException {
return provider(path).getFileStore(path);
}
……
}