1.访问文件和目录
import java.io.*;
public class FileTest
{
public static void main(String[] args) throws IOException
{
//以当前路径来创建一个File对象
File file = new File(".");
//直接获取文件名,输出一点
System.out.println(file.getName());
//获取相对路径的父路径可能出错,下面代码输出null
System.out.println(file.getParent());
//获取绝对路径
System.out.println(file.getAbsoluteFile());
//获取上一级路径
System.out.println(file.getAbsoluteFile().getParent());
//在当前路径下创建一个临时文件
File tmpFile = File.createTempFile("aaa", ".txt", file);
//指定当JVM退出时删除该文件
tmpFile.deleteOnExit();
//以系统当前时间作为新文件名来创建新文件
File newFile = new File(System.currentTimeMillis() + "");
System.out.println("newFile对象是否存在:" + newFile.exists());
//以指定newFile对象来创建一个文件
newFile.createNewFile();
//以newFile对象来创建一个目录,因为newFile已经存在,
//所以下面方法返回false,即无法创建该目录
newFile.mkdir();
//使用list方法来列出当前路径下的所有文件和路径
String[] fileList = file.list();
System.out.println("======当前路径下所有文件和路径如下=====");
for (String fileName : fileList)
{
System.out.println(fileName);
}
//listRoots静态方法列出所有的磁盘根路径。
File[] roots = File.listRoots();
System.out.println("======系统所有根路径如下=====");
for (File root : roots)
{
System.out.println(root);
}
}
}
2.文件过滤器
public class FilenameFilterTest
{
public static void main(String[] args)
{
File file = new File(".");
String[] nameList = file.list(new MyFilenameFilter());
for (String name : nameList)
{
System.out.println(name);
}
}
}
//实现自己的FilenameFilter实现类
class MyFilenameFilter implements FilenameFilter
{
public boolean accept(File dir, String name)
{
//如果文件名以.java结尾,或者文件对应一个路径,返回true
return name.endsWith(".java")
|| new File(name).isDirectory();
}
}
这种用法是一个典型的Command设计模式,因为File的list方法需要一个判断规则:判断哪些文件应该被列出--这段判断规则需要一个代码块,所以Java使用了accept方法来封装该代码块。