File类
位于java.io.File;包中,是文件或者目录的抽象表示。
File类有四个构造函数:
File(String pathname)
File(File parent, String child)
File(String parent, String child)
File(URI uri)
注意:路径分隔符:c:\\com适合windows系统,c:/com
常用方法
File file = new File("c:/1.txt");
//判断文件是否存在
if(!file.exists())
{
try {
file.createNewFile();//创建文件
System.out.println(file.isFile());//是否是文件
System.out.println(file.isDirectory());//是否是目录
} catch (IOException e) {
e.printStackTrace();
}
}
File dir = new File("C:/temp/test");
dir.mkdir();//创建目录,必须上一级目录存在,即最底层目录前面的目录全都存在
dir.mkdirs();//目录一次性全都创建好
File[] fileArray = dir.listFiles();//返回抽象路径名下的所有文件
String[] strArray = dir.list();//返回抽象路径名表示目录下的文件名和目录名
System.out.println(dir.getName());//返回文件名
System.out.println(dir.getParent());//返回父目录名
前面提到File类对象既可以是文件也可以是目录,创建文件是createNewFile()方法,相对应的,创建目录即调用mkdir()方法。
File类是不对称的,说它不对称,意思是虽然存在允许验证一个简单文件对象属性的很多方法,但是没有相应的方法来修改这些属性,即有get无set。
另外,File类还可以对目录和文件进行删除(删除目录时,目录必须为空时才能删除)、属性修改等工作。方法名都比较直观,在此不多做介绍了,可以查看java API进行了解。
FilenameFilter
FilenameFilter
使用FilenameFilter过滤文件:希望能够限制由
list()
方法返回的文件,使它仅返回那些与一定的文件名方式或者
过滤器(filter)
相匹配的文件。FilenameFilter
中有一个
accept()
方法,只有该方法判断为true的文件名会被list方法返回。所以可以在accept方法中设置筛选规则。(策略模式)
File dir = new File("C:/temp/test");
/*
* 使用文件过滤器
* 采用匿名内部类(Anonymous Inner Class)
* 匿名内部类会隐式地继承一个父类或实现一个接口。
* 只有accept为true的文件名会被返回到数组中
*/
String[] selectedNames = dir.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".java")) return true;
return false;
}
});
//打印输出
for(String name : selectedNames)
{
System.out.println(name);
}