java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作
1. 构造方法
public File(String pathname): 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
public File(String parent,String child): 从父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent,String child):从父抽象路径名和子路径名字符串创建新的 File实例。
public class Demo01 {
public static void main(String[] args) throws IOException {
//创建了一个File对象 , 构造方法中指定的是当前file对象对应的路径
File file = new File("D:\SGUIGU\ownnote\Day5\Day18\a\hello");
//判断file对象是否存在
System.out.println(file.exists());
//file.isDirectory() 判断file对象是否是一个文件夹
//file对象如果不存在,或者不是文件夹,则创建文件夹 - mkDir()
if(!file.exists() || !file.isDirectory()) {
//创建对应的文件
//file.createNewFile();
//mk - make 创建,制作
//dir - directory 目录、文件夹
//file.mkdir(); //此处需要注意的是:如果文件名对应的文件已经存在,在win上创建文件夹会失败,并且没有任何异常
file.mkdirs(); //如果父目录不存在,则先创建父目录,再创建子目录
}
}
}
//2.演示创建File的另外两个构造方法
public class Demo2{
public static void main(String[] args) throws IOException {
//第一个参数是父路径
//第二个参数是File名称
//File file = new File("D:\SGUIGU\ownnote\Day5\Day18\a","hello2.txt");
File parentFile = new File("D:\\SGUIGU\\ownnote\\Day5\\Day18\\a");
String fileName = "hell02.txt";
File file = new File(parentFile , fileName);
if(!file.exists()){
file.createNewFile();
}
}
}
2. 常用方法
2.1 获取功能的方法
public String getName():返回由此File表示的文件或目录的名称。
public String getPath():将此File转换为路径名字符串。
public String getAbsolutePath():返回此File的绝对路径名字符串。
public File getAbsoluteFile():返回此File对应的绝对路径文件。
public String getParent():返回此File对应的父文件夹路径。
public File getParentFile():返回此File对应的父文件夹对象。
public long length():返回由此File表示的文件的大小,单位是字节。
public class Demo3 {
public static void main(String[] args) {
File file = new File("D:\\SGUIGU\\ownnote\\Day5\\Day18\\a","hello3.txt");
//获取文件名
System.out.println("file.getName() = " + file.getName()); //file.getName() = hello3.txt
//获取绝对路径
System.out.println("file.getAbsolutePath() = " + file.getAbsolutePath());
//file.getAbsolutePath() = D:\SGUIGU\ownnote\Day5\Day18\a\hello3.txt
//获取父路径
System.out.println("file.getParent() = " + file.getParent());
//file.getParent() = D:\SGUIGU\ownnote\Day5\Day18\a
//获取文件的大小
System.out.println("file.length() = " + file.length()); //file.length() = 0
//last 最近、最后
//modifie 修改
//获取最近的一次修改时间,返回的是long类型
Long lastModified = file.lastModified();
Date date = new Date(lastModified);
System.out.println("date = " + date);
}
}
2.2 判断相关方法
public boolean exists(): 此File表示的文件或目录是否实际存在。
public boolean isDirectory(): 此File表示的是否为目录
public boolean isFile(): 此File表示的是否为目录
public class Demo4 {
public static void main(String[] args) {
File file = new File("D:\\SGUIGU\\ownnote\\Day5\\Day18\\a","hello4.txt");
//是否是可执行文件
System.out.println("file.canExecute() = " + file.canExecute()); //x
//是否可读
System.out.println("file.canRead() = " + file.canRead()); //r
//是否可写
System.out.println("file.canWrite() = " + file.canWrite()); //w
//是否是隐藏文件
System.out.println("file.isHidden() = " + file.isHidden());//false
//重命名
file.renameTo(new File("D:\\SGUIGU\\ownnote\\Day5\\Day18\\a\\hello44"));
//当程序退出的时候删除file文件
//file.deleteOnExit();
//当场删除文件
file.delete();
}
}
2.3 操作文件(夹)相关方法
public boolean creatNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
public boolean delete():删除由此File表示的文件或目录
public boolean mkdir():创建由此File表示的目录
public boolean mkdirs():创建由此File表示的目录,包括任何必需但不存在的父目录。
File f1 = new File("c.txt");
f1.createNewFile(); // 如果文件不存在,就创建文件
f1.delete(); // 删除文件
File f2 = new File("aaa");
f2.mkdir(); // 如果文件夹不存在就创建文件夹
f2.delete(); // 可以用来删除文件
File f3 = new File("bbb/ccc/ddd");
f3.mkdirs(); // 创建多级文件夹
File f4 = new File("bbb");
f4.delete(); // 如果要删除文件夹,文件夹必须是空的
2.4 文件夹遍历
public String[] list():返回一个String数组,表示该File目录中的所有子文件或目录。
public File[] listFiles(): 返回一个File数组,表示该File目录中的所有的子文件或目录
File f = new File("bbb");
String[] paths = f.list();
System.out.println(Arrays.toString(paths));
File[] files = f.listFiles();
System.out.println(Arrays.toString(files));
public class Demo5 {
public static void main(String[] args) {
File file = new File("D:\\SGUIGU\\ownnote\\Day5\\Day18\\src\\a");
//返回file下面的所有的子文件以及子目录 ,返回数组形式的File
File[] childFileArr = file.listFiles();
for (int i = 0; i < childFileArr.length; i++) {
File childFile = childFileArr[i];
System.out.println("childFile.getAbsolutePath() = " + childFile.getAbsolutePath());
}
}
}