Java I/O的类有很多。我们要去学习I/O类库演化的过程。因为,如果缺少历史的眼光,我们很快就会对什么时候该使用哪些类,以及什么时候不该使用它们而感到困惑。
18.1 File类
这个称作FilePath类更好一些
package com.sdkd.JavaIO;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;
public class DirList {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
File path = new File(".");
String[] list;
if(args.length == 0){
System.out.println("args。length == 0");
list = path.list();
}else{
list = path.list(new DirFilter(args[0]));
}
Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
for(String dirItem : list){
System.out.println(dirItem);
}
}
}
class DirFilter implements FilenameFilter{
private Pattern pattern;
public DirFilter(String regex){
pattern = Pattern.compile(regex);
}
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return false;
}
}
这个书上的例子是要用命令行来运行 加参数才使String【】不为空。另外类里面的Filtername的引用可以用内部类来实现。
File类有许多操作,自行google。
File path = new File("hms.txt");
if(path.exists()){
System.out.println(path.getAbsolutePath());
}else{
path = new File("hms.txt");
System.out.println(path.getAbsolutePath());
}
这里第一个 path = new File(“hms.txt”)创建的只是一个文件流而已。
下面检测之后确认是要创建一个文件。
18.2 输入和输出
流:它代表有能力产出数据的数据源对象或是有能力接受数据的接收端对象。”流”屏蔽了实际的I/O设备中处理数据的细节。
有时候,我们想创建单一的流,但是却要创建多个对象。其实这是Java的装饰者模式(我blog的设计模式里有)。
18.3
添加属性和有用的接口
还是装饰者模式在这里的应用。
(有问题的可以问)
18.4 Reader和Writer
提供兼容Unicode与面向字符的I/O功能。
后面实在太多,但是前面是基础,也是重点。理解之后其他的肯定不成问题。
时间: 2024-11-09 00:05:57