File类介绍
File类使用的包是java.io.file,主要用于对文件和目录的新建、删除、重命名,File不支持对文件内容的读取操作。
定义File
//相对路径的文件/文件夹示例
//绝对路径的文件/文件夹示例
File file = new File("文件的绝对或相对的路径");
//绝对路径文件
File absoluteFile = new File("C:\\JavaTest\\IOTest.java");
//相对路径文件
File relativeFile1 = new File("IOTest.java");
//相对路径文件
File relativeFile2 = new File(".\\IOTest.java");
//相对路径文件
File relativeFile3 = new File("..\\JavaTest\\IOTest.java");
- 转义字符 \
在Java中因为 \ 是转义字符,因此需要对路径中的 \ 进行转义,所以需要两次 \ 才可以表示正确的路径。
- 绝对路径
绝对路径表示文件从根目录开始的路径,Linux和Mac系统中的根目录一般是以 \ 开始,windows系统中的根目录一般是以 C:\、D:\、E:\ 等开始。
- 相对路径
相对路径,如果直接写文件名或 .\文件名,则表示从运行文件的当前目录下查找,如果写…\则表示从上一级目录查找。
File的常用方法
获取文件信息
String getName()
返回File对象的文件或目录名
String tmp = file.getName();
String getPath()
返回File对象传入的路径
String tmp = file.getPath();
File getAbsoluteFile()
返回File对象的File类型的绝对路径
File tmp = file.getAbsoluteFile();
String getAbsolutePath()
返回File对象的绝对路径
String tmp = file.getAbsolutePath();
String getParent():返回文件对象的最后一级目录或目录对象的上一级目录
String tmp = file.getParent();
Long lastModified()
返回文件最后的修改时间
Long tmp = file.getModified();
Long length()
返回文件最后的长度
Long tmo = file.length();
String[] list()
返回File对象的所有子文件和目录(不包含子目录的子目录)
String[] list = file.list();
File[] listFile()
返回File对象的所有子文件和目录的File对象
File[] list = file.listFile();
static File[] listRoots()
返回所有根目录的File对象
File[] list = File.listRoots();
文件检测方法
boolean exists()
判断File对象对应的文件或目录是否存在
boolean tmp = file.exists();
boolean canWrite()
判断File对象对应的文件或目录是否可写
boolean tmp = file.canWrite();
boolean isFile()
判断File对象是否是文件
boolean tmp = file.isFile();
boolean isDirectory()
判断File对象是否是目录
boolean tmp = file.isDirectory();
boolean isAbsolute()
判断File帝乡是否是绝对路径
boolean tmp = file.isAbsolute();
文件或目录的操作方法
boolean createNewFile() throws IOException
File文件对象不存在时创建文件
boolean tmp = file.createNewFile();
boolean delete()
删除File所对应的文件或目录
boolean tmp = file.delete();
File createTmpFile(String prefix, String suffix) throws IOException
在系统默认的临时文件目录里创建一个空的临时文件。其中prefix为文件前缀且长度必须大于等于3,suffix为文件类型后缀,如果suffix为null,则采用系统默认的.tmp后缀。
File createTempFile(String prefix, String suffix, File directory) throws IOException
在指定的临时文件中创建一个临时的空文件,其它参数用法同上
File tmpFile1 = File.createTmpFile("文件前缀",".amt");
File tmpFile2 = File.createTmpFile("文件前缀",null,"C:/JavaTest");
void deleteOnExit()
当退出虚拟机时,系统自动删除File对应的文件或目录
file.deleteOnExit();
boolean mkdir()
创建File所对应的目录
boolean tmp = file.mkdir();
文件过滤器
String[] list(FilenameFilter filter)中可以接受一个FilenameFilter对象,用来只列出符合条件的文件或目录。
FilenameFilter里包含一个boolean accept(File dir, String name)方法,如果该方法返回true,则list会列出该子目录或文件。
同时,因为accept是唯一的一个抽象方法,因此可以使用lambda表达式进行书写。
下面一段代码表示输出目录或后缀名为.java的文件
String url = "C:\\JavaTest";
File file = new File(url);
String[] list = file.list((File dir,String name)-> (name.endsWith(".java")&& new File(name).isFile()) || new File(name).isDirectory());
for(int i=0;i<list.length;i++){
System.out.println(list[i]);
}