File类
该类主要用于文件和目录的创建、文件的查找和文件的删除等。File对象代表磁盘中实际存在的文件和目录。
可以通过以下构造方法创建一个File对象。
//通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。
File(String pathname)
例如:
//创建一个File对象,指定E盘下createFile.txt文件,然后再做创建该文件、删除该文件之类的后续操作
File file = new File("E:/createFile.txt");
File类对文件的操作
用到的方法有:exists()、delete()、createNewFile()
boolean exists() :
测试此抽象路径名表示的文件或目录是否存在。boolean delete() :
删除此抽象路径名表示的文件或目录。boolean createNewFile() :
创建新文件,如果文件已经存在(即创建的文件名已经存在)则不能再创建同名文件。文件已存在返回false,创建成功返回true。
代码演示:
/**
* 创建文件
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//创建文件对象,需要指定文件所在的路径
File file = new File("E:/createFile.txt");
//判断文件是否已存在
if(file.exists()) {
//删除文件
file.delete();
}
//创建文件
file.createNewFile();
}
File类对目录的操作
用到的方法:
boolean mkdir()
创建单级目录,如果路径中的上级目录不存在或目标目录已存在则创建失败,返回false,创建成功返回true
boolean mkdirs()
创建多级目录,如果目录已经存在则返回false,创建成功返回true
String[] list()
返回一个字符串数组,该数组由指定目录下的所有文件的抽象路径名和第一级目录的抽象路径名组成。File[] listFiles()
返回某个目录下所有文件和目录的绝对路径,返回的是File数组
boolean isFile()
测试此抽象路径名表示的文件是否是一个标准文件String getName()
返回由此抽象路径名表示的文件或目录的名称。String getPath()
将此抽象路径名转换为一个路径名字符串。
public static void main(String[] args) throws IOException {
//创建文件对象
File file = new File("E:/file/test");
//创建单级目录,因为路径是多级目录,且file目录尚不存在,所以会创建失败返回false。
System.out.println(file.mkdir());
//mkdirs()可以创建多级目录
System.out.println(file.mkdirs());
}
/*程序运行结果
false
true
*/
/**
* 获取指定目录下的第一级目录名和文件名列表
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//向file文件夹中添加目录和文件
File file1 = new File("E:/file/test/java");
file1.mkdirs();
File file2 = new File("E:/file/目录");
file2.mkdirs();
File file3 = new File("E:/file/java.txt");
file3.createNewFile();
//创建一个指定file文件夹的对象
File file4 = new File("E:/file");
//list()方法返回一个由file目录下的所有第一级目录名和文件名组成的字符串数组
//用一个数组接收用于遍历
String[] fileList = file4.list();
//for循环逐个输出目录名和文件名
for(int i=0;i<fileList.length;i++) {
System.out.println(fileList[i]);
}
}
/*程序运行结果
java.txt
test
目录
*/
注意:list()方法只返回指定路径下的第一级目录名和文件名。
使用递归输出指定路径下的所有文件名:
/**
* 一个递归方法。递归:方法自身调用自身
* 递归一定要有出口
* @param path
* @throws IOException
*/
public static void getFileListMethod(String path) throws IOException {
//创建一个文件对象,指定路径由方法参数传入
File file = new File(path);
//用listFiles()方法获取指定路径path下的所有文件的绝对路径
File[] files = file.listFiles();
//因为可能存在某些文件夹是空的,此时获取到的文件列表对象就是null对象
if(files != null) {
for(int i=0;i<files.length;i++) {
//判断当前的文件对象是否是文件
if(files[i].isFile()) {
//如果是文件,就用getName()获取文件名
System.out.println(files[i].getName());
}else {
//如果是目录,就用getPath()获取路径名,调用本方法,作为参数传入本方法中
String filePath = files[i].getPath();
//递归:方法自身调用自身
getFileListMethod(filePath);
}
}
}
}
测试递归方法:
public static void main(String[] args) throws IOException {
//向file文件夹中添加目录和文件
File file1 = new File("E:/file/test/java");
file1.mkdirs();
File file2 = new File("E:/file/文件1.txt");
file2.createNewFile();
File file3 = new File("E:/file/test/文件2.txt");
file3.createNewFile();
File file4 = new File("E:/file/test/java/文件3.txt");
file4.createNewFile();
//输出所有文件名
getFileListMethod("E:/file");
}
/*程序运行结果
文件3.txt
文件2.txt
文件1.txt
*/