一. 概述:
1)File类用来将文件或者文件夹封装成对象
2)方便对文件与文件夹的属性信息进行操作
3)File不能访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流,File对象可以作为参数传递给流的构造函数
二. 构造函数:
三. 常用方法:
//创建:
boolean createNewFile() 在指定位置创建一个空文件,成功返回true,如果已存在就不创建,并返回false。
boolean mkdir() 在指定位置创建一个单级文件夹(一级目录)。
boolean mkdirs() 在指定位置创建一个多级文件夹。
boolean renameTo(File dest) 如果目标文件与源文件是在同一个路径下,那么renameTo的作用是重命名, 如果目标文件与源文件不是在同一个路径下,那么renameTo的作用就是剪切并重命名
//删除:
boolean delete() 删除文件或者一个空文件夹,不能删除非空文件夹
void deleteOnExit() jvm退出时删除文件或者文件夹,用于删除临时文件
//判断:
boolean exists() 文件或文件夹是否存在。
boolean isFile() 是否是一个文件,如果不存在,则始终为false。
boolean isDirectory() 是否是一个目录,如果不存在,则始终为false。
boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。
//获取:
String getName() 获取文件或文件夹的名称,不包含上级路径。
String getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
String getAbsolutePath() 获取文件的绝对路径,与文件是否存在没关系
long length() 获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。
long lastModified()获取最后一次被修改的时间。
//文件夹相关:
static File[] listRoots() 列出所有的根目录(在Window下就是所有系统的盘符)
String[] list() 返回目录下的文件或者目录名,包含隐藏文件
File[] listFiles() 返回目录下的文件或者目录对象(File类实例),包含隐藏文件
File[] list(FilenameFilter filter)返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
File[] listFiles(FilenameFilter filter)返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
eg1:使用过滤器获取e盘根目录下所有的.java文件
import java.io.*;
public class FileDemo2 {
public static void main(String[] args) {
File dir = new File("e://");
String[] names = dir.list(new FilenameFilter() //过滤器(通过匿名内部类实现)
{
public boolean accept(File dir, String filename) //重写FileFilter接口的accept方法,定义过滤标准
{
return filename.endsWith(".java");
}
});
for(String name:names)
{
System.out.println(name);
}
}
}
eg2:递归遍历某个文件夹下面的所有文件
import java.io.*;
public class FileTest {
public static void main(String[] args) {
File dir = new File("E://java");
traverse(dir);
}
public static void traverse(File dir)
{
File[] dirs = dir.listFiles(); //获取当前目录下的文件或文件夹对象
for(File f:dirs)
{
if(f.isDirectory()) //若为文件夹,需继续遍历该文件夹下的文件
{
traverse(f);
}
System.out.println(f);
}
}
}