Java语言使用File类对文件和目录进行操作,查找文件时需要实现FilenameFilter或FileFilter接口。读写文件内容可以通过FileInputStream、FileOutputStream、FileReader和FileWriter类实现。

File类

File类是跨平台的,表示一个文件或一个目录(文件夹)

File类中常用的方法如下:

1、构造方法

File(String path):如果path是实际存在的路径,则对File对象表示的是目录;如果path是文件名,则该File对象表示的是文件。

File(String path,String name):path是路径名,name是文件名。

File(File dir,String name):path是路径对象,name是文件名。

2、获得文件名

String getName():获得文件的名称,不包括路径。

String getPath():获得文件的路径。

String getAbsolutePath():获得稳健的绝对路径。

3、文件属性测试

boolean exists():测试当前File对象所表示的文件是否存在。

boolean canWrite():测试当前文件是否可写。

boolean canRead():测试当前文件是否可读。

boolean isFile():测试当前文件是否是文件。

boolean isDirectory():测试当前文件是否是目录。

4、文件操作

long lastModified():获得稳健最近一次修改的时间。

long length():获得稳健的长度,以字节为单位。

boolean delete():删除当前文件,成功返回true,否则返回false。

boolean renameTo(File dest):将重新命名当前File对象所表示的文件,成功返回true,否则返回false。

5、目录操作

boolean mkdir():创建当前File对象指定的目录。

String[] list():返回当前目录下的文件和目录,返回值是字符串数组。

String[] list(FilenameFilter):返回当前目录下满足指定过滤器的文件和目录,参数是实现FilenameFilter接口对象,返回值是字符串数组。

File[] listFiles():返回当前目录下的文件和目录,返回值是File数组。

File[] listFiles(FilenameFilter filter):返回当前目录下满足指定过滤器的文件和目录,参数是实现FileNameFilter接口对象,返回值是File数组。

File[] listFiles(FileFilter filter):返回当前目录下满足指定过滤器的文件和目录,参数是实现FileFilter接口对象,返回值是File数组。

对目录操作有两个过滤器接口:FilenameFilter和FileFilter,他们都只有一个抽象方法accept。

FilenameFilter接口中的accept方法如下:

boolean accept(File dir,String name):测试指定dir目录中是否包含文件名为name的文件。

FileFilter接口中的accept方法如下:

boolean accept(File pathname):测试指定路径名是否应该包含在某个路径名列表中。

代码示例(在指定的目录中列出文件信息)

import java.io.File;
import java.io.FilenameFilter;

//过滤获取html文件
public class FileTest {
	public static void main(String[] args) {
		//当前目录就是工程的根目录
		File dir = new File("./TestDir");//或TestDir
		
		//初始化过滤器,获取后缀名为“html”的文件
		Filter filter = new Filter("html");
		//files获取结果集
		String files[] = dir.list(filter);
		
		//使用for-each循环遍历
		for(String filename:files){
			File file = new File(filename);
			//判断这个file是否是文件
			if(file.isFile()){
				//打印名称
				System.out.println(file.getName());
				//打印路径
				System.out.println(file.getAbsolutePath());
			}else{// 判断这个file是否是目录
				System.out.println(file);
			}
		}
	}

}
//过滤器类,实现FilenameFilter接口
class Filter implements FilenameFilter{
	
	String extent; //文件后缀名
	
	//带参数构造函数
	Filter(String extent) {
		this.extent = extent;
	}
	
	//accept实现,来自FilenameFilter接口
	@Override
	public boolean accept(File dir,String name){
		boolean b = name.endsWith("."+extent);//html文件
		return b;
	}
}