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("系統沒有找到路徑"); } }