File类是对文件或者目录的一系列操作。如文件和目录的创建、检查、删除、路径获取等。现介绍下常用构造方法和方法。
一、构造方法。
File类提供了多个构造方法来创建File对象,以表示文件或目录。
1. File(String pathname)
通过指定文件路径名创建File对象。
- 参数:pathname为文件的路径名,也可以是一个纯目录,可以是绝对路径或者相对路径。
2. File(String parent, String child)
通过指定父路径和子路径创建File对象。
- 参数:parent为父路径名,child为子路径名。
3. File(File parent, String child)
通过指定父File对象和子路径创建File对象。
- 参数:parent为父File对象,child为子路径名。
创建c:\example\exapmle.txt文件
File parentDir = new File("C:\\example");
File file = new File(parentDir, "example.txt");
三、常用方法
Java中的File类提供了许多常用的方法,用于操作文件和目录。
exists():检查文件或目录是否存在。
createNewFile():创建新文件。如果文件已经存在,则不会创建,并返回false。
mkdir():创建目录。如果目录已经存在,则不会创建,并返回false。
mkdirs():创建目录,包括所有必要的父目录。
delete():删除文件或目录。
getName():获取文件或目录的名称。
getPath():获取文件或目录的路径。
isFile():检查File对象是否表示一个文件。
isDirectory():检查File对象是否表示一个目录。
length():获取文件的大小。
list():返回目录中的文件和目录名数组。
listFiles():返回目录中的文件和目录对象数组。
相关代码:
public static void main(String[] args) {
//D:\temp\新建文件夹目录下的文件及目录结构如下
//D:\temp\新建文件夹\aaa.txt
// D:\temp\新建文件夹\xx.txt
// D:\temp\新建文件夹\vv
// D:\temp\新建文件夹\vv\zzz.txt
fileTest("D:\\temp\\新建文件夹");
//获取D:\temp\新建文件夹目录及子目录下所有文件名的绝对路径
List<String> dirname = getDirAllFile("D:\\temp\\新建文件夹");
System.out.println("dirname = " + dirname.toString());
}
public static void fileTest(String path){
File file = new File(path);
//获取path目录(只能是目录,不能包含文件名)下的File对象(文件/目录对象),
// 且只能获取当前目录下,不能获取子目录下
File[] files = file.listFiles();
for (File f : files){
String fName = f.getName();
String absolutePath = f.getAbsolutePath();
System.out.println("fName = " + fName + " ,absolutePath=" + absolutePath + " ,Filetostr=" + f.toString());
System.out.println("isFile = " + f.isFile() + " ,isDir=" + f.isDirectory() + " isExist=" + f.exists());
System.out.println("getPath = " + f.getPath() + " ,parentPath=" + f.getParent());
}
//获取path目录(只能是目录,不能包含文件名)下的File对象的名字,不包含目录
// 且只能获取当前目录下,不能获取子目录下
String[] list = file.list();
for (String str : list){
System.out.println("str = " + str);
}
}
//获取某目录及子目录下所有文件的绝对路径
public static List<String> getDirAllFile(String path){
File file = new File(path);
File[] files = file.listFiles();
List<String> rt = new ArrayList<>();
for (File f : files){
if(!f.isDirectory()){
rt.add(f.getAbsolutePath());
}
}
for (File ff : files){
if (ff.isDirectory()){
rt.addAll(getDirAllFile(ff.getAbsolutePath()));
}
}
return rt;
}
输出: