File類
方法
1.構造方法
獲取 File 類有三種形式:
1. File(String pathName); 根據當前路徑獲取File對象,可以是
文件,也可以是文件夾。
2. File(String parent, String child); 根據對應的父文件路徑,
以及子文件或子文件夾名創建對應的 File 對象。
3. File(File parent, String child); 根據對應的父目錄文件夾
File類對象,以及子文件 名或者子文件夾名,創建對應File
//獲取E盤創建文件文件夾下的bbb
File file = new File("E:/創建文件/bbb");
//獲取E盤創建文件文件夾下aaa 文件夾下的 1.txt
File file2 = new File("E:/創建文件/aaa", "1.txt");
//獲取E盤創建文件文件夾下的bbb文件夾中的 bbb
File file3 = new File(file, "bbb");
2.創建方法
1. boolean createNewFile(); 創建普通文件,創建成功返回true,失敗返回false
2. boolean mkdir(); 創建文件夾,創建成功返回true,失敗返回false
//第一種獲取File對象方式
File file = new File("E:/創建文件/bbb");
// 第三中獲取方式
File file3 = new File(file, "bbb");
//在 E:/創建文件/bbb 目錄下創建 bbb 文件夾
System.out.println(file3.mkdir());
/*
* 在 E:/創建文件/bbb 目錄下創建 bbb 文件
* System.out.println(file3.createNewFile());
*/
3.刪除方法
1. boolean delete(); 通過File類對象調用,刪除對應的文件或者文件夾
2. void deleteOnExit(); 程序退出時刪除對應的文件或者文件夾
注意:
- 刪除的文件或者文件夾都是直接抹除數據並非放入回收站內
- 不能刪除非空的文件夾
4.判斷文件屬性
方法 | 作用 |
---|---|
boolean isFile(); | 判斷是否是一個普通文件 |
boolean isDirctory(); | 判斷是否是一個文件夾 |
boolean isAbsolute(); | 判斷是否使用了絕對路徑 |
boolean isHidden(); | 判斷是否是隱藏文件 |
boolean exists(); | 判斷文件是否存在 |
5.獲取文件屬性
方法 | 作用 |
---|---|
String getPath(); | 獲取File類對象保存的路徑 |
String getName(); | 獲取當前File類對象中保存的文件名或者文件夾名 |
String getParent(); | 獲取當前File類對象對應文件或者文件夾的父目錄路徑 |
String getAbsolutePath(); | 獲取當File類對象對應文件或者文件夾的絕對路徑 |
long lastModified() | 獲取文件的最後一次修改時間 |
long length(); | 獲取文件的大小,佔用硬盤空間字節數 |
以上方法的前4個方法哪怕對應文件不存在也不會報錯
列表方法
方法 | 作用 |
---|---|
static File[] listRoots(); | 獲 取當前電腦內所有根盤符對象 (針對windows操縱系統) |
File[] listFiles(); | 當前File類對象對應文件夾 下的所有子文件或者子文件夾 |
String[] list(); | 當前File類對象對應文件夾 下的所有子文件或者子文件夾的String類型文件名或者文件 夾名字 |
假設我的E盤創建文件文件夾下有一個bbb文件。
File file = new File("E:/創建文件");
String[] listFiles = file.list();
for (String files : listFiles) {
//此處只輸出文件名 如 bbb(路徑E:/創建文件/bbb)
System.out.println(files);
}
File[] listFiles2 = file.listFiles();
for (File files : listFiles2) {
//此處輸出E:\創建文件\bbb
System.out.println(files);
}
案例
如果在某路徑下有一堆文件,現在讓你將這些文件進行分類(比如txt文件,放在TXT文件夾下;ppt文件放在PPT文件夾下…)
代碼
// 目標文件夾的File類對象
File file = new File("E\\創建文件");
// 需要創建的文件夾類對象
File toBeCreateDir = null;
// 判斷是否是文件夾
if (!file.isDirectory()) {
return;
}
// 當前文件夾已經歸檔完成,不需要再次歸檔
if(new File(file, "1.lock").exists()) {
System.out.println("已經歸檔完成");
return;
}
// 當前文件夾下的所有子文件和子文件夾的File類對象數組
File[] listFiles = file.listFiles();
// 遍歷File類對象數組
for (File srcFile : listFiles) {
// 如果是普通文件,獲取文件後綴名
if (srcFile.isFile()) {
String fileName = srcFile.getName();
/
* substing(int i);截取從i位置開始的字符串
* lastIndexOf(int ch) 字符最後出現的位置
* toUpperCase();轉爲大寫字符
*/
String upperSuffix = fileName.substring(fileName.lastIndexOf('.') + 1)
.toUpperCase();
toBeCreateDir = new File(file, upperSuffix);
} else {
toBeCreateDir = new File(file, "subDir");
}
// 創建文件夾
toBeCreateDir.mkdir();
// 移動文件或者文件夾
srcFile.renameTo(new File(toBeCreateDir, srcFile.getName()));
}
// 創建一個鎖文件
new File(file, "1.lock").createNewFile();