Java
IO
API
中的File
类java.io.File
允许访问底层文件系统。使用Java
File
类,可以:
- 检查是否存在文件或目录。
- 如果目录不存在,创建一个目录。
- 读取文件的长度。
- 重命名或移动文件。
- 删除文件。
- 检查路径是文件还是目录。
- 读取目录中的文件列表。
注意:Java
File
类只允许您访问文件和目录元数据。
如果您需要读取或写入文件的内容,则应使用FileInputStream
、FileOutputStream
或RandomAccessFile
。
- File类的一个对象,代表一个文件或者一个文件目录(文件夹)
- File类声明在
java.io
包下 - File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或者读取文件内容的操作,如果需要读取或写入文件内容,必须使用IO流来完成。后续File类的对象常会作为参数传递到流的构造器中,指明读取或者写入的目标地址。
2.1 创建 File 实例:
File(String filePath)
File(String parenPath, String childPath)
File(File parentFile, String childPath)
注意:路径分隔符:
- Windows:
\\
- Unix:
/
在IDEA中,如果使用JUnit
单元测试方法测试,相对路径即为当前Module
下。如果使用main()
测试,相对路径即为当前的Project
下。
File file = new File("C:\\TestCodeProject\\test.txt");
File
类相关API
:
getAbsolutePath()
:获取当前File文件存在的绝对路径getPath()
:获取路径getName()
:获取名称getParent()
:获取上层文件目录路径。若无,则返回nulllength()
:获取文件长度(如:字节数)。不能获取目录的长度。lastModified()
:获取最后一次的修改时间,毫秒值
适用于文件目录方法:
list()
:获取指定目录下的所有文件或者文件目录的名称组成的数组listFiles()
:获取指定目录下的所有文件或者文件目录的File数组
2.2 检查文件和目录存在:
可以通过exists()
方法测试File
(文件或者目录)是否存在。返回一个boolean
类型的值表示存在与否。
File file = new File("c:\\data\\input-file.txt"); boolean fileExists = file.exists();
2.3 创建文件目录:
File
类提供了两个创建文件目录的API
:mkdir()
和mkdirs()
。
mkdir()
:只能创建一级目录,返回一个Boolean
类型标识文件目录是否创建成功。
File file = new File("hello"); boolean success = file.mkdir();
mkdirs()
:创建多级目录,在创建目录的过程中会把缺少的所有目录层级都创建出来
File file = new File("hello\\test\\01"); boolean mkdir = file.mkdirs();
2.4 获取文件大小:
File
提供了可以读取文件所占字节数量API
:length()
。
File file = new File("test.txt"); long length = file.length();
2.5 移动、重命名文件和目录:
可以通过renameTo()
方法将文件移动到指定的目录,或者移动到当前目录重命名文件。
File file = new File("test.txt"); boolean success = file.renameTo(new File("test-move.txt"));
delete()
方法可以直接删除文件和文件目录:
File file = new File("c:\\data\\input-file.txt"); boolean success = file.delete();
Java
提供File
的delete()
方法只能在目录为空时删除该目录。要删除包含文件和子目录的目录,必须遍历该目录并首先删除所有文件和子文件夹,然后才能删除根目录。此迭代必须递归执行,因此您还可以删除子目录及其子目录的所有内容。否则,根目录的删除将失败。
这里提供了一个Java
方法,可以递归地删除一个目录及其所有子目录及其文件:
public static boolean deleteDir(File dir){ File[] files = dir.listFiles(); if(files != null){ for(File file : files){ if(file.isDirectory()){ deleteDir(file); } else { file.delete(); } } } return dir.delete(); }
2.7 判断文件还是文件目录:
通过isDirectory()
方法判断一个File
实例是文件还是目录:
File file = new File("c:\\data"); boolean isDirectory = file.isDirectory();
2.8 读取文件和目录列表:
可以通过调用list()
方法或listFiles()
方法来获取目录中所有文件的列表。list()
方法返回一个String
数组,其中包含file
对象所指向目录的文件名和/或目录名。listFiles()
返回一个file
对象数组,表示file
所指向目录中的文件或文件夹。
File file = new File("c:\\data"); String[] fileNames = file.list(); File[] files = file.listFiles();