Java.io包下的File类实现了Serializable和Comparable两个接口
1.创建文件
注意:
1).如果D盘下file文件夹不存在,则抛出异常;如果D盘下file文件夹存在,则创建成功,返回true
2).如果D盘下file文件夹下已存在file.txt文件,则返回false
public static void main(String[] args) throws IOException { File file = new File("D:\\file\\file.txt"); System.out.println("文件是否创建成功:"+file.createNewFile()); } }
2.判断文件是否存在
存在返回true;不存在返回false
System.out.println("文件是否存在:"+file.exists());
3.判断是否是文件
是返回true;不是返回false
System.out.println("是否是文件:"+file.isFile());
4.文件重命名
成功返回true;不成功返回false;
注意:如果修改后的路径和修改前的路径不一致,会把修改前的文件剪切掉,然后再新路径下创建新的文件
File file2 = new File("D:\\file\\file2.txt"); System.out.println("文件重命名是否成功:"+file.renameTo(file2));
5.创建单级目录
创建成功返回true;创建失败返回false
注意:
1)如果目录已存在,返回false
2)mkdir()无法创建多级目录
File f = new File("D:\\dir"); System.out.println("创建单级目录是否成功:"+f.mkdir());
6.创建多级目录
创建成功返回true;创建失败返回false
注意:如果目录已存在,返回false
File f = new File("D:\\dir\\dir1\\dir2"); System.out.println("创建多级目录是否成功:"+f.mkdirs());
7.判断是否是文件夹
是返回true;不是返回false
System.out.println("是否是文件夹:"+f.isDirectory());
8.获取文件/文件夹的名称
注意:如果是获取文件夹,那么获取到的是最后一级的目录名
System.out.println("文件的名称:"+file.getName());
System.out.println("文件夹的名称:"+f.getName());
9.获取文件/文件夹的路径
9.1getPath()
注意:
1)返回的是定义时的路径,这个路径可能是相对路径,也可能是绝对路径,这个取决于你定义路径时的设置
2)返回值类型是String
System.out.println("文件路径字符串:"+file.getPath());
System.out.println("目录路径字符串"+f.getPath());
9.2getAbsolutePath()
注意:
1)返回的是绝对路径,即从根路径开始
2)返回值类型是String
System.out.println("文件路径字符串:"+file.getAbsolutePath());
System.out.println("目录路径字符串"+f.getAbsolutePath());
9.3getAbsoluteFile()
注意:
1)返回的是绝对路径,即从根路径开始
2)返回值类型是File
System.out.println("文件绝对路径:"+file.getAbsoluteFile());
System.out.println("目录绝对路径"+f.getAbsoluteFile());
10.删除文件/文件夹
删除成功返回true,删除失败返回false
注意:当删除文件夹时,delete()方法删除的是最后一级目录
System.out.println("文件是否删除成功:"+file.delete());
System.out.println("文件夹是否删除成功:"+f.delete());
11.获取文件/文件夹所在的目录名称
返回值类型为String
注意:返回的路径与定义File类时的路径一致
System.out.println("文件所在文件夹名称:"+file.getParent());//文件所在文件夹名称:D:\file System.out.println("上级目录名称:"+f.getParent());//上级目录名称:D:\dir\dir1
12.获取文件大小
返回值类型是long
注意:返回的文件大小表示字节(一个英文占1字节,一个汉字占3字节)
System.out.println("文件大小:"+file.length());//文件大小:7
13.获取最后修改时间
返回值类型是long
long date = file.lastModified(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(simpleDateFormat.format(new Date(date)));//2020-05-13 13:35:45
14.获取目录下文件/文件夹
14.1 list()方法
返回值类型是字符串集合
注意:返回的是目录下的文件或文件夹,如果文件夹下还有文件,不会返回
String[] list = f.list(); for (String s : list) { System.out.println(s); }
14.2 listFiles()方法
返回值类型是File类型集合
注意:返回的是目录下的文件或文件夹,如果文件夹下还有文件,不会返回
File[] files = f.listFiles(); for (File fl : files) { System.out.println("目录下文件/文件夹名称:"+fl.getName()); }
综合示例(递归,查看目录下所有的文件夹和文件)
public static void main(String[] args) throws IOException { String rootPath = "D:\\dir"; recursion(rootPath); } public static void recursion(String rootPath ) { File f1 = new File(rootPath); if (f1 != null) { if (f1.isDirectory()) { File[] files = f1.listFiles(); if (files.length > 0) { for (File file : files) { if (file.isDirectory()) { System.out.println(rootPath+"下"+"文件夹名称:" + file.getName()); recursion(file.getAbsolutePath()); } else { System.out.println(rootPath+"下"+"文件名称:"+file.getName()); } } } else { System.out.println(rootPath+"目录下没有内容"); } } else { System.out.println(rootPath + "不是目录"); } } else { System.out.println("系统没有找到路径"); } }