File 类
目录列表
File 既能代表一个特定的文件的名称,也能代表一个目录下的一组文件的名称,如果是一个文件集,则可以调用 list()
方法返回字符数组。
// 能访问java/util目录下的所有类,不能访问java/util子目录下的所有类。
// 因为如果java.util里面有个a类,java.util.regex里面也有个a类,我们若是要调用a类的方法或属性时,无法判断使用哪个a类呢。
import java.util.*;
// 所以如果要用Pattern,还需要再引入
import java.util.regex.Pattern;
// 注解只是可以方便编译器检查,即使不写也不会报错
@Override
匿名内部类的参数必须是final
?
目录遍历
目录检查及创建
private static void fileData(File f) {
System.out.println(
"Absolute path: " + f.getAbsolutePath() +
"\n Can read: " + f.canRead() +
"\n Can write: " + f.canWrite() +
"\n getName: " + f.getName() +
"\n getParent: " + f.getParent() +
"\n getPath: " + f.getPath() +
"\n length: " + f.length() +
"\n lastModified: " + f.lastModified());
if(f.isFile())
System.out.println("It’s a file");
else if(f.isDirectory())
System.out.println("It’s a directory");
}
// 创建目录
mkdir()
// 递归创建目录
mkdirs()
输入和输出
Java 1.0:InputStream
和 OutputStream
,面向字节的IO
Java 1.1:Reader
和 Writer
,提供兼容Unicode 和面向字符的IO
RandomAccessFile
文件内部移动及随机读写。
IO流的典型使用方式
从缓冲读入
BufferedReader in = new BufferedReader(new FileReader(filename));
StringBuilder out = new StringBuilder();
基本的文件输出
FileWriter
对象可以向文件写入数据,BufferedWriter
将其包装用以缓冲输出以提高性能,
PrintWriter
提供格式化输出机制。
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file)));
Java SE5 提供了简写
PrintWriter out = new PrintWriter(file);
存储和恢复数据
DataInputStream();
DataOutputStream();
管道流
主要用于多线程,任务之间的通信。
标准IO
System.out 和 System.err 被包装成 PrintStream
, System.in 则是未包装的InputStream
.
IO 重定向
setIn(InputStream);
setOut(PrintStream);
setErr(PrintStream);
新IO
java 1.4 引入了新的IO类库,旨在提高速度。而且旧的IO包已经nio重新实现过。