一、什么是File类
File类是SUN公司提供给开发者操作文件和文件夹的一个类。Java中万物皆对象,计算机中万物皆文件。
获取File类有三种方式:
- File(String pathName);
根据对应的文件路径创建获取对应的File类对象,可以是文件,可以是文件夹。 - File(String parent, String child);
根据对应的父目录文件夹路径,以及子文件名或者子文件夹名,创建对应的File类对
象。 - File(File parent, String child);
根据对应的父目录文件夹File类对象,以及子文件名或者子文件夹名,创建对应File
类对象。
路径中有一个很重要的东西,那就是路径分隔符
Windows 分隔符 默认是 \
Linux UNIX macOS 分隔符 默认是 /
Windows同样支持Linux分隔符 / 没有任何问题
根据当前系统来区分不同的分隔符可以使用 File.separatorChar
二、创建文件和文件夹
1、通过File类对象调用,创建对应File类对象中保存的路径的普通文件
boolean createNewFile();
创建成功返回true,创建失败返回false
返回false的原因:
1. 路径不合法。
2. 对应的文件夹没有写入权限。 rwxr-xr-x
3. 对应当前的文件已经存在。
2、通过File类对象调用,创建对应File类对象中保存路径的文件夹
boolean mkdir();
创建成功返回true,创建失败返回false
返回false的原因同上
3、通过File类对象创建其中保存的文件目录的所有对应文件夹,包括中间路径
boolean mkdirs();
同样地创建成功返回true,创建失败返回false
返回false的原因同上
4、通过File类对象调用,转为目标File类对象dest
boolean renameTo(File dest);
该方法可用于文件和文件夹的移动操作,同时可以实现重命名操作
三、删除文件或者文件夹
1、通过File类对象调用,删除对应的文件或者文件夹
boolean delete();
特别要注意的是:
- 删除的文件或者文件夹都是直接抹掉数据,不是放入回收站。
- 无法删除非空文件夹,文件夹中存在其他内容无法整体删除。
2、程序退出时删除对应的文件或者文件夹
void deleteOnExit();
用于删除程序运行过程中,留下的日志文件、缓冲文件、操作日志等。
四、文件属性判断
1、判断是否是一个普通文件
boolean isFile();
2、判断是否是一个文件夹
boolean isDirctory();
3、判断是否使用了绝对路径
boolean isAbsolute();
4、判断是否是隐藏文件
boolean isHidden();
5、判断文件是否存在
boolean exists();
五、获取文件属性
1、获取文件的最后一次修改时间
long lastModified();
返回值是一个时间戳类型,是从1970年01月01日 00:00:009(计算机元年)到现在的秒数。
2、获取文件的大小,占用硬盘空间字节数
long length();
如果操作的是文件夹,返回0L
3、获取File类对象保存的路径
String getPath();
4、获取当前File类对象中保存的文件名或者文件夹名
String getName();
5、获取当前File类对象对应文件或者文件夹的父目录路径
String getParent();
6、获取当File类对象对应文件或者文件夹的绝对路径
String getAbsolutePath();
六、列表方法
1、获取当前电脑内所有根盘符对象
static File[] listRoots();
通过File类调用,有且针对于Windows操作系统有效,如果是Linux,UNIX,macOS是无效的。
2、获取当前File类对象对应文件夹下的所有子文件或者子文件夹的File类对象数组
File[] listFiles();
同样是通过File类调用。
3、获取当前File类对象对应文件夹下的所有子文件或者子文件夹的String类型文件名或者文件夹名字数组
String[] list();
七、FilenameFilter文件名过滤器
@FunctionalInterface
public interface FilenameFilter {
/**
* Tests if a specified file should be included in a file list.
*
* @param dir the directory in which the file was found.
* @param name the name of the file.
* @return <code>true</code> if and only if the name should be
* included in the file list; <code>false</code> otherwise.
*/
boolean accept(File dir, String name);
}
通过实现上述接口来找出符合要求的文件或文件夹。
// 使用匿名内部类的匿名对象直接作为方法的参数
File[] listFiles = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
/*
* dir是当前操作的文件夹类对象
* name是当前文件夹下的子文件或者子文件夹名字
* 获取对应的java文件
* 1. 判断是不是普通文件
* 2. 判断当前文件名是不是.java结尾
*/
return new File(dir, name).isFile()
// endsWith字符串方法,判断当前字符串是不是已指定要求结尾
&& name.endsWith(".java");
}
});
来源:CSDN
作者:Betterman_QS
链接:https://blog.csdn.net/Betterman_QS/article/details/104501430