Java中的File类

心不动则不痛 提交于 2020-02-25 19:04:13

一、什么是File类

File类是SUN公司提供给开发者操作文件和文件夹的一个类。Java中万物皆对象,计算机中万物皆文件。
获取File类有三种方式:

  1. File(String pathName);
    根据对应的文件路径创建获取对应的File类对象,可以是文件,可以是文件夹。
  2. File(String parent, String child);
    根据对应的父目录文件夹路径,以及子文件名或者子文件夹名,创建对应的File类对
    象。
  3. 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();

特别要注意的是:

  1. 删除的文件或者文件夹都是直接抹掉数据,不是放入回收站。
  2. 无法删除非空文件夹,文件夹中存在其他内容无法整体删除。
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");
	}
});
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!