File:
构造方法:
public File(String pathname) 使用文件路径创建一个File对象
public File(String parent, String child) 使用父文件路径和子文件或者子文件路径创建一个File对象
public File(File parent, String child) 使用父文件对象和子文件或者子文件路径创建一个File对象
File类中和创建功能相关的方法
public boolean createNewFile(): 创建一个新的文件, 如果没有就创建一个,如果有就不创建
public boolean mkdir(): 创建目录 , 如果没有就创建一个,如果有就不创建
public boolean mkdirs(): 创建多级文件夹 , (也可以创建单级文件夹)
注:
绝对路径: 以盘符开始的路径
相对路径: 就是不是以盘符开始的路径就是相对路径
File类中和删除功能相关的方法
public boolean delete(): 删除文件或者文件夹
注:
删除的时候不走回收站
File类中和重命名相关的方法
public boolean renameTo(File dest):把文件重命名为指定的文件路径
注:
如果目标文件的路径和原文件的路径一致,那么就是重命名
如果不一致就进行重命名,然后剪切
File类中和判断功能相关的方法
public boolean isDirectory(): 判断是否是目录
public boolean isFile(): 判断是否是文件
public boolean exists(): 判断是否存在
public boolean canRead(): 判断是否可读
public boolean canWrite(): 判断是否可写
public boolean isHidden(): 判断是否隐藏
File类中和获取功能相关的方法
public String getAbsolutePath(): 获取文件的绝对路径
public String getPath(): 获取相对路径
public String getName(): 获取文件名称
public long length(): 获取文件的大小 , 单位是字节
public long lastModified(): 获取最后一次修改时间
public String[] list(): 获取的是指定路径下所有的文件和文件夹对应的名称数组
public File[] listFiles(): 获取的是指定的路径下所有的文件和文件夹对应的File数组
举两个简单的例子:
1.获取指定目录下的指定文件
import java.io.File;
/*
* 编写程序,获取指定目录下 所有的.java结尾的文件, 打印出文件的绝对路径(包含 子文件夹中的.java文
*
* 思路:使用递归的方法
* 1.获取指定目录
* 1>如果是以.java结束的文件,则打印其绝对路径
* 2>如果是文件夹
* (1)以.java结束的文件,打印其绝对路径
* (2)如果是文件夹,则1
*/
public class RecursionFileDemo {
public static void main(String[] args) {
//将指定目录封装成File对象
File file = new File("E:\\code");
//使用方法递归求指定路径下的文件
RecursionFileFun(file);
}
//定义递归方法
public static void RecursionFileFun( File file){
//获取目录下所有文件对象
File[] list = file.listFiles();
for(File l:list){
if(l.isFile()){
// System.out.println(l.getName());
//如果文件以.java结尾,则将其打印出来
if(l.getName().endsWith(".java")){
System.out.println(l.getAbsoluteFile());
}
}
//如果是文件夹,则将其递归调用
else{
RecursionFileFun(l);
}
}
}
}
/*
* E:\code\MyName.java
E:\code\Test.java
*/
2.模拟rm -fr 递归删除文件夹下的文件
import java.io.File;
/*
编写程序,删除 指定目录下的 所有文件与文件夹 (包含子文件夹)
*/
public class RecursionFileDemo2 {
public static void main(String[] args) {
//将指定目录封装为File对象
File file = new File("E://code");
RecursionFileFun(file);
}
public static void RecursionFileFun(File file) {
// TODO Auto-generated method stub
//获取指定路径下的文件对象数组
File[] list = file.listFiles();
for(File l:list){
//如果是文件,则将其直接删除
if(l.isFile()){
l.delete();
}
else{
RecursionFileFun(l);
//删除文件夹
l.delete();
}
}
}
}