File
File类的常用方法
构造方法
方法名 | 描述 |
---|---|
File(File parent, String child) | 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 |
File(String pathname) | 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 |
File(String parent, String child) | 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 |
File类文件属性方法
属性:
static String pathSeparator:与系统有关的路径分隔符,为了方便,它被表示为一个字符串(;)。
static char pathSeparatorChar:;
static String Separator:与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串(\)。
static char SeparatorChar:\
//分号
System.out.println(File.pathSeparator);
System.out.println(File.pathSeparatorChar);
//反斜杠
System.out.println(File.separator);
System.out.println(File.separatorChar);
方法:
返回值 | 方法名/描述 |
---|---|
boolean | canExecute() 测试应用程序是否可以执行此抽象路径名表示的文件。 |
boolean | canRead() 测试应用程序是否可以读取此抽象路径名表示的文件。 |
boolean | canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。 |
int | compareTo(File) 按字母顺序比较两个抽象路径名。 |
boolean | exists() 测试此抽象路径名表示的文件或目录是否存在。 |
boolean | createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建个新的空文件。 |
boolean | delete() 删除此抽象路径名表示的文件或目录。 |
File | getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。 |
String | getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。 |
File | getCanonicalFile() 返回此抽象路径名的规范形式。 |
String | getCanonicalPath() 返回此抽象路径名的规范路径名字符串。 |
String | getName() 返回由此抽象路径名表示的文件或目录的名称。 |
String | getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。 |
File | getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录则返回 null。 |
String | getPath() 将此抽象路径名转换为一个路径名字符串。 |
boolean | isDirectory() 测试此抽象路径名表示的文件是否是一个目录。 |
boolean | isFile() 测试此抽象路径名表示的文件是否是一个标准文件。 |
boolean | isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。 |
String[] | list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 |
boolean | mkdir() 创建此抽象路径名指定的目录。 |
boolean | mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 |
boolean | renameTo(File dest) 重新命名此抽象路径名表示的文件。 |
File[] | listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 |
练习
列出文件夹里的文件及文件夹、根据条件列出文件
public class FileUsageDemo02 {
public static void main(String[] args) {
String string = "C:\\Users\\Administrator\\Desktop\\test";
method1(string);
method2(string);
}
//需求一:列出指定目录下所有子文件夹以及子文件
public static void method1(String path) {
File file = new File(path);
//list
//子文件或者子文件夹的名称
String[] arr = file.list();
for(String str:arr) {
System.out.println(str);
}
}
/**
* 需求二:列出指定目录下所有子文件夹以及子文件,要求格式如下:
* 子文件: isFile()
*
* 子文件夹:isDirectory()
*
*/
public static void method2(String path) {
File file = new File(path);
//获取指定路径下所有File对象
//listFiles()
File[] files = file.listFiles();
for(File f:files) {
if(f.isFile()) {
System.out.println("子文件:");
//获取每个文件的名字
System.out.println(f.getName());
} else if(f.isDirectory()) {
System.out.println("子文件夹:");
System.out.println(f.getName());
}
}
}
//需求:列出指定目录下所有后缀为.java的文件
public static void method3(String path) {
//endsWith
File file = new File(path);
String[] arr = file.list();
for(String str:arr) {
if(str.endsWith(".java")) {
System.out.println(str);
}
}
}
}
递归遍历、递归删除
import java.io.File;
import java.lang.reflect.Field;
/**
* 1 列出文件夹中所有的子文件夹和文件,包括子文件夹中文件和文件夹
*
*/
public class Demo3 {
public static void main(String[] args) {
//listFiles(new File("d:\\图片"));
deleteDir(new File("c:\\"));
}
//1 列出文件夹中所有的子文件夹和文件,包括子文件夹中文件和文件夹
public static void listFiles(File dir) {
System.out.println(dir.getAbsolutePath());
File[] files=dir.listFiles();
if(files!=null&&files.length>0) {
for (File file : files) {
if(file.isDirectory()) {
//递归
listFiles(file);
}else {
System.out.println(file.getAbsolutePath());
}
}
}
}
//2递归删除文件夹
public static void deleteDir(File dir) {
File[] files=dir.listFiles();
if(files!=null&&files.length>0) {
for (File file : files) {
if(file.isDirectory()) {
deleteDir(file);
}else {
//删除文件
System.out.println(file.toString()+"-----"+file.delete());
}
}
}
//删除文件夹
System.out.println(dir.toString()+"*********"+dir.delete());
}
}