1. Java 中 File
类的理解
File
既可以表示文件,也可以表示目录File
构造方法中的路径参数可以是已经存在的,也可以是不存在的。可以是相对路径,也可以是绝对路径- 通过
new
新建一个File
对象,不会实际创建一个文件,只是创建一个表示文件或目录的对象。new
之后,File
对象中的路径是不可变的
2. 文件元数据原理
- 文件元数据主要包括文件名和路径、文件基本信息以及一些安全和权限相关的信息
separator
和separatorChar
表示文件路径分隔符。在 Windows 系统中,一般为'\'
,Linux 系统中一般为'/'
pathSeparator
和pathSeparatorChar
表示多个文件路径中的分隔符。在 Windows 系统中,一般为;
,在 Linux 系统中,一般为:
File
对象没有返回创建时间的方法,因为创建时间不是一个公共概念,Linux/Unix 就没有创建时间的概念
3. 文件操作理解
- 文件操作主要有创建、删除、重命名
- 新建一个
File
对象不会实际创建文件,但方法public boolean createNewFile() throws IOException
可以,创建成功返回true
,否则返回false
,新创建的文件内容为空。如果文件已存在,不会创建 public boolean delete()
方法是删除文件或目录。要删除目录,先要删除目录下的所有子目录和文件,否则不能删除。删除成功返回true
,否则返回false
public void deleteOnExit()
方法将File
对象加入到待删列表,在 Java 虚拟机正常退出的时候进行实际删除。- 重命名方法
public boolean renameTo(File dest)
,参数dest
代表重命名后的文件,重命名能否成功与系统有关,返回值代表是否成功
4. 方法 public boolean mkdir()
和 方法 public boolean mkdirs()
的异同
- 当
File
对象代表目录时,可以执行目录相关的操作,如创建、遍历 - 相同:它们都是创建目录,创建成功返回 true,失败返回 false。如果目录已存在,返回值是
false
- 不同:如果某一个中间父目录不存在,则
mkdir()
会失败,返回false
,而mkdirs()
则会创建必需的中间父目录
5. 列出当前目录下的所有扩展名为 .txt 的文件
1 | File f = new File("."); |
6. 计算一个目录下的所有文件的大小(包括子目录)
1 | public static long sizeOfDirectory(final File directory) { |
7. 在一个目录下,查找所有给定文件名的文件
1 | public static Collection<File> findFile(final File directory, final String fileName) { |
8. 写一个删除一个非空目录的方法
1 | public static void deleteRecursively(final File file) throws IOException { |