一、概述
File是描述一个文件或者文件夹亦称为目录的类。
File中有两种创建file对象的方法:File(String pathname)和 File(File parent, String child);
1、通过路径名创建file文件
//1.表示创建了一个file对象指向D盘的a.txt //只是将传入的字符串标记为一个file对象 //实际上此时并不去计算机中检查这个文件是否存在 File file = new File("D:a.txt"); //File file = new File("D:\test.txt"); //File file = new File("D:\a\b\c"); //2.创建文件 //当且仅当这个文件不存在时候,才会创建一个新文件 //这个方法只能用于创建文件 boolean b = file.createNewFile();
2、通过父路径和子路径创建file对象
本质上是拼接父路径和子路径,然后创建file对象。
public void cutFile(File src, File dest) { if(src.isDirectory()) { return; } //获取要剪切的文件的名字 String fileName =src.getName(); //创建同名文件 File newFile = new File(dest, fileName); }
二、路径
1、目录间隔符
在Windows中,用\间隔目录;在Linux或者是Unix中,是用/间隔目录,Java中为了屏蔽不同操作系统的差异性,所以提供了File.separator表示中间符。
示例如下
File file = new File("D:"+ File.separator +"everydayNote" + File.separator + "Day08"
+ File.separator + "Day08 - 副本");
2、路径间隔符
在Windows中,用;间隔不同的路径;在Linux或者Unix中,用:间隔不同的路径,java中为了屏蔽不同操作系统的差异性,所以提供了File.pathSeparator表示间隔符;
3、绝对路径:
以盘符或者是/开头的路径。在计算路径的时候和当前路径没有任何关系。
4、相对路径:
不以盘符或者是/开头的路径。在计算路径的时候需要以当前路径为基准进行计算。“../”表示上一层目录。
示例:
File file = new File("D:\a.txt");
//1. 获取绝对路径 System.out.println(file.getAbsolutePath()); //2. 获取路径 System.out.println(file.getPath()); System.out.println(file.getParent());
三、File中常用的方法
1、创建方法
创建文件的方法:createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false
创建单级目录的方法:mkdir(): 在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。
创建多级目录:mkdirs() 在指定位置创建目录,这会创建路径中所有不存在的目录。
重命名文件:renameTo(File dest) 重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于对文件进行剪切,剪切时候不能操作非空的文件夹。移动/重命名成功则返回true,失败则返回false。
2、判断文件或者目录是否存在
exists() 文件或文件夹是否存在。
判断是否为一个文件:isFile() 是否是一个文件,如果不存在,则始终为false。
判断是否为一个目录:isDirectory() 是否是一个目录,如果不存在,则始终为false。
判断文件是否是为隐藏文件:isHidden() 是否是一个隐藏的文件或是否是隐藏的目录。
判断文件路径是否为绝对路径:isAbsolute() 测试此抽象路径名是否为绝对路径名。
3、获取方法
获取目录下所有的子文件和字目录:listFiles()
获取文件名:getName() 获取文件或文件夹的名称,不包含上级路径。
获取文件路径:getPath() 返回绝对路径,可以是相对路径,但是目录要指定
获取文件绝对路径:getAbsolutePath() 获取文件的绝对路径,与文件是否存在没关系
获取文件路径:length() 获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。
获取文件父路径: getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
获取文件最后修改的时间:lastModified() 获取最后一次被修改的时间。
4、删除方法
删除方法:delete() 删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除,成功返回true,失败返回false。
终止时删除方法:deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录,保证程序异常时创建的临时文件也可以被删除
四、使用案例
删除一个文件下所有的文件:
思路:如果是文件则直接删除,如果是文件夹,则遍历该文件夹,然后删除其中的文件。
public static boolean deleteDirectory(String filePath) { File file = new File(filePath); if(file.isFile()) { file.delete(); } else if(file.isDirectory()) { File[] fs = file.listFiles(); for(File f : fs) { deleteDirectory(f); } } file.delete(); return true; }