1.什麼是File類
Java是面對對象的語言,計算機中的內容不是文件即是文件夾。
獲取File類有三種方式【構造方法】:
- File(String pathNmae);
根據對應的文件路徑創建獲取對應的File類對象,可以是文件,可以是文件夾。 - File(String parent, String child);
根據對應的父目錄文件夾路徑,以及子文件名或者子文件夾名,創建對應的File類對象 - File(File parent, String child);
根據對應的父目錄文件夾File類對象,以及子文件名或者子文件夾名,創建對應File類對象
代碼格式:
/*
* 創建File類對象過程
*/
public class Demo1 {
public static void main(String[] args) throws IOException {
//創建文件的三種方式
//操作文件必須帶有文件的後綴名。如1.txt
File file = new File("F:\\test\\2.txt");
//separator 根據系統自動補齊分隔符
// File file1 = new File("F:" + File.separator + "test");
// File file2 = new File("F:\\test","1.txt");
// File file3 = new File(file, "aaa");
System.out.println(file.createNewFile());
System.out.println(file.createNewFile());
}
}
文件的路徑屬性分爲:
1.相對路徑
2.絕對路徑。
路徑分隔符:
windows是 / 或 \\
Linux UNIX macOS 分隔符是/
File.separatorChar() 該方法會根據當前系統來自動補齊不同的分隔符
2.創建文件和文件夾
創建文件方法:
boolean createNewFile();
該方法通過File類對象調用,創建對應File類對象中保存的路徑的普通文件。
若返回false,可能的原因有:
1.路徑不合法
2.對應的文件夾沒有寫入權限
3.對應的文件已經存在
代碼格式:
//創建File類對象file
File file = new File("F:/test");
//創建File類對象file2,並創建保存的子文件
File file2 = new File(file, "file2.txt");
System.out.println(file2.createNewFile());
創建文件夾方法:
(1)boolean mkdir();
該方法也是通過File類對象調用,創建對應File類對象中保存路徑的文件夾。
若返回false,可能的原因有:
1.路徑不合法
2.對應的文件夾沒有寫入權限
3.對應的文件夾已經存在
(2)boolean mkdirs();
通過File類對象創建其中保存的文件目錄的所有對應文件夾,包括中間路徑
(3)boolean renameTo(File dest);
通過File類對象調用,轉爲目標File類對象dest
該方法可重命名文件/文件夾和移動。
代碼:
//創建File類對象file3,並創建保存的文件夾
File file3 = new File(file, "bbb");
System.out.println(file3.mkdir());
//創建File類對象file4,並創建保存的文件夾目錄
File file4 = new File("F:/test/a/s/d/f/1");
System.out.println(file4.mkdirs());
3.刪除文件或文件夾
(1)boolean delete();
通過File類對象調用,刪除對應的文件或者文件夾
【注意】
1.刪除的文件或者文件夾都是直接抹掉數據,不是放入回收站
2.無法刪除非空文件夾,文件夾中存在其他內容無法整體刪除。
(2)void deleteOnExit();
程序退出時刪除對應的文件或者文件夾
代碼:
/*
* 刪除文件或文件夾
*/
public class Demo3 {
public static void main(String[] args) throws IOException {
File file = new File("F:/test/刪除該文件");
file.createNewFile();
//刪除文件
System.out.println(file.delete());
File file2 = new File("F:/test/刪除文件夾");
file2.mkdir();
//刪除文件夾
System.out.println(file2.delete());
//deleteOnExit
File file3 = new File("F:/test/2.txt");
file3.deleteOnExit();
}
}
4.文件屬性判斷
- boolean isFile();
判斷是否是一個普通文件 - boolean isDirctory();
判斷是否是一個文件夾 - boolean isAbsolute();
判斷是否使用了絕對路徑 - boolean isHidden();
判斷是否是隱藏文件 - boolean exists();
判斷文件是否存在
代碼:
//判斷是否爲文件後者文件夾
System.out.println(new File("F:/test/bbb").isFile());
System.out.println(new File("F:/test/bbb").isDirectory());
//判斷不存在的文件和文件夾
//若不存在,都爲false
System.out.println(new File("F:/test/qqq.zip").isFile());
System.out.println(new File("F:/test/qqq").isDirectory());
5.獲取文件屬性
沒什麼大用。因爲不管文件是否存在,都能得到相應屬性。因爲返回的是創建對象中保存的地址和文件名。
1.String getPath();
獲取File類對象保存的路徑
2.String getName();
獲取當前File類對象中保存的文件名或者文件夾名
3.String getParent();
獲取當前File類對象對應文件或者文件夾的父目錄路徑
4.String getAbsolutePath();
獲取當File類對象對應文件或者文件夾的絕對路徑
其中也存在兩個有用的方法:
1.long lastModified()
獲取文件的最後一次修改時間,返回值是一個時間戳類型。
2.long length();
獲取文件的大小,佔用硬盤空間字節數。
代碼:
/獲取文件的路徑和姓名
System.out.println(file.getPath());
System.out.println(file.getName());
//獲取指定子集合(要頭不要尾)
String str = "F:/test/bbb/1.zip";
System.out.println(str.substring(str.lastIndexOf('b') ));
//獲取文件的父目錄
System.out.println(file.getParent());
//獲取指定子集和
System.out.println(str.substring(0, str.lastIndexOf('/')));
//獲取文件的絕對路徑
System.out.println("--------------------------");
System.out.println(new File("99999999").getAbsolutePath());
6.列表方法:
- static File[] listRoots();
通過File類調用,有且針對於Windows操作系統有效,獲取當前電腦內所有根盤符對象,如果是Linux,UNIX,macOS是無效的。 - File[] listFiles();
通過File類對象調用,獲取當前File類對象對應文件夾下的所有子文件或者子文件夾的File類對象數組 - String[] list();
通過File類對象調用,獲取當前File類對象對應文件夾下的所有子文件或者子文件夾的String類型文件名或者文件夾名字數組
代碼:
/*
* 獲取文件的屬性
*/
public class Demo6 {
public static void main(String[] args) {
File file = new File("F:/test/bbb/3.txt");
//file.lastModified()最後一次修改時間
long lastModified = file.lastModified();
System.out.println(lastModified);
//對於日期展示的處理方式
//SimpleDateFormat一個日期的規範格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
String format = simpleDateFormat.format(new Date(lastModified));
System.out.println(format);
//獲取文件的大小(佔用字節數)
//如果操作的是文件夾,返回0L
System.out.println(file.length());
System.out.println(new File("F:/test/bbb").length());
}
}
7. FilenameFilter文件名過濾器
功能:
【用於獲取指定類型的文件】
/*
* 獲取文件列表、文件名、增強for循環!!!
*/
public class Demo7 {
public static void main(String[] args) {
//獲取當前電腦內所有根盤符對象
File[] listRoots = File.listRoots();
/*
* for(數據類型 變量名:數組/集合 ){
*
*
* }
*/
for (File file : listRoots) {
System.out.println(file);
}
System.out.println("-----------------");
//獲取目標文件夾下的所有子文件和子文件夾
File file = new File("E:/java");
File[] listFiles = file.listFiles();
for (File file2 : listFiles) {
System.out.println(file2);
}
//獲取子文件或子文件夾的名字
System.out.println("=====================");
String[] list = file.list();
for (String string : list) {
System.out.println(string);
}
}
}