1.基本概念
File:檔案和目錄路徑名的抽象表示形式,代表檔案或者檔案夾。
2. 構造方法
// 根據parent抽象路徑名和child路徑名字元串建立一個新File執行個體
File(File parent, String child)
// 通過将給定路徑名字元串轉換為抽象路徑名來建立一個新File執行個體
File(String pathname)
// 根據parent路徑名字元串和child路徑名字元串建立一個新File執行個體
File(String parent, String child)
// 通過将給定的file:URI轉換為一個抽象路徑名來建立一個新的File執行個體
File(URI uri)
3.常用方法
(1).建立功能
// 建立此抽象路徑名指定的目錄
boolean mkdir()
// 建立此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄
boolean mkdirs()
// 當且僅當不存在具有此抽象路徑名指定名稱的檔案時,不可分地建立一個新的空檔案
boolean createNewFile()
// 在預設臨時檔案目錄中建立一個空檔案,使用給定字首和字尾生成其名稱
static File createTempFile(String prefix, String suffix)
// 在指定目錄中建立一個新的空檔案,使用給定的字首和字尾字元串生成其名稱
static File createTempFile(String prefix, String suffix, File directory)
// 構造方法一 File file1 = new File("f://file1");
// 構造方法二 File file2 = new File("f://file1", "file2");
// 構造方法三 File file3 = new File(file2, "file3.txt");
// 建立目錄并傳回是否建立成功,如果目錄存在則傳回false
boolean b1 = file1.mkdir(); System.out.println(b1);// true
// 建立目錄 boolean b2 = file2.mkdir();
System.out.println(b2);// true
// 建立檔案
// 在F盤下建立/file1/file2/file3.txt檔案
boolean b3 = file3.createNewFile();
System.out.println(b3);// true
// 建立空檔案并指定字首和字尾
// 在F盤下建立/file1/file2/file4.....exe檔案
File.createTempFile("file4", ".exe", file2);
注:三種構造方法效果是等同的,沒有本質差別;建立目錄mkdir()、mkdirs()方法,mkdirs()方法建立目錄時,如果待建立目錄的上幾級目錄不存在則一并建立,mkdir()則隻能建立單級目錄。
(2).删除功能
// 删除此抽象路徑名表示的檔案或目錄
boolean delete()
//删除目錄
System.out.println(file1.delete()); // false
//删除檔案
System.out.println(file3.delete());// true
注:删除操作時,删除的是目錄,則必須保證是空目錄。
(3).判斷功能
// 測試此抽象路徑名表示的檔案或目錄是否存在
boolean exists()
// 測試此抽象路徑名表示的檔案是否是一個目錄
boolean isDirectory()
// 測試此抽象路徑名表示的檔案是否是一個标準檔案
boolean isFile()
// 測試此抽象路徑名指定的檔案是否是一個隐藏檔案
boolean isHidden()
// 測試應用程式是否可以讀取此抽象路徑名表示的檔案
boolean canRead()
// 測試應用程式是否可以修改此抽象路徑名表示的檔案
boolean canWrite()
File file = new File("F://hello");
File file2 = new File(file, "blog.txt");
// 判斷是否存在
if (!file.exists()) {
// 建立目錄
file.mkdir();
}
if (file2.exists()) {
// 建立檔案
file2.createNewFile();
}
// 判斷是否是目錄
System.out.println(file.isDirectory());// true
// 判斷是否是檔案
System.out.println(file.isFile());// false
System.out.println(file2.isDirectory());// false
System.out.println(file2.isFile());// true
System.out.println(file2.isHidden());// false
// 判斷是否是隐藏的
System.out.println(file2.isHidden());// false
// 判斷是否可讀
System.out.println(file2.canRead());// true
// 判斷是否可寫
System.out.println(file2.canWrite());// true
注:可以自主修改檔案可讀性,檢視不同輸出。
(4).擷取功能
(1).基本擷取功能
// 傳回由此抽象路徑名表示的檔案或目錄的名稱
String getName()
// 傳回此抽象路徑名的絕對路徑名形式
File getAbsoluteFile()
// 傳回此抽象路徑名的絕對路徑名字元串
String getAbsolutePath()
// 将此抽象路徑名轉換為一個路徑名字元串
String getPath()
// 傳回此抽象路徑名表示的檔案最後一次被修改的時間
long lastModified()
File file = new File("F://hello");
File file2 = new File(file, "blog.txt");
// 判斷檔案或目錄是否存在
if (!file.exists()) {
// 不存在則建立
file.mkdir();
}
if (file2.exists()) {
// 建立檔案
file2.createNewFile();
}
//擷取檔案名或者目錄名
System.out.println(file2.getName());// blog.txt
//擷取檔案或目錄的絕對路徑
System.out.println(file2.getAbsolutePath());// F:\hello\blog.txt
//擷取檔案或目錄的路徑名(絕對路徑或者相對路徑)
System.out.println(file2.getPath());// F:\hello\blog.txt
//擷取檔案或目錄修改的最後時間傳回毫秒值
System.out.println(file2.lastModified());// 1463734158963
(2).疊代擷取功能,過濾器功能
// 傳回一個字元串數組,這些字元串指定此抽象路徑名表示的目錄中的檔案和目錄
String[] list()
// 傳回一個字元串數組,這些字元串指定此抽象路徑名表示的目錄中滿足指定過濾器的檔案和目錄
String[] list(FilenameFilter filter)
// 傳回一個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的檔案
File[] listFiles()
// 傳回抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的檔案和目錄
File[] listFiles(FileFilter filter)
File[] listFiles(FilenameFilter filter)
File file = new File("F://");
// 擷取抽象路徑名下的檔案和目錄
String[] s = file.list();
// 過濾檔案或者目錄名
String[] ss = file.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
// 傳回以.png結尾的檔案或者目錄名
// 控制傳回值判斷是否添加到數組中
return name.endsWith(".png");
}
});
// 增強for輸出
for (String string : s) {
System.out.print(string + " ");// $RECYCLE.BIN android4.0黑馬 android視訊......等等
}
// 增強for
for (String string : ss) {
System.out.print(string + " ");// ic_ptr_loading.png ic_ptr_pull.png ic_ptr_release.png
}
// 擷取抽象路徑名下的檔案和目錄對象
File[] files = file.listFiles();
// 擷取抽象路徑名下的檔案和目錄對象,添加檔案過濾
File[] files2 = file.listFiles(new FileFilter() {
public boolean accept(File pathname) {
// 判斷是否是隐藏目錄
return (pathname.isDirectory()&&pathname.isHidden());
}
});
// 擷取抽象路徑名下的檔案和目錄對象,添加檔案名過濾
File[] files3 = file.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
// 判斷是否是以png結尾的檔案
return (new File(dir, name).isFile())&&name.endsWith(".png");
}
});
for (File f : files) {
System.out.print(f.getName()+" ");//$RECYCLE.BIN android4.0黑馬 android視訊......等等
System.out.println();
for (File f : files2) {
System.out.print(f.getName()+" ");//$RECYCLE.BIN ghos
}
System.out.println();
for (File f : files3) {
System.out.print(f.getName());//ic_ptr_loading.pngic_ptr_pull.pngic_ptr_release.png
}
(5).重命名功能
// 重新命名此抽象路徑名表示的檔案
boolean renameTo(File dest)
// 重新命名此抽象路徑名表示的檔案
// boolean renameTo(File dest)
File file = new File("f://");
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
File f = files[i];
//判斷是否是以.png結尾的檔案
if (f.isFile() && f.getName().endsWith(".png")) {
// 更改檔案名,renameTo()接收File對象 ,這裡該對象并未指定盤符
boolean b = f.renameTo(new File("pic" + i + ".png"));
System.out.println(b);
// true
// true
// true
}
}
注:更改檔案或目錄名時,renameTo()方法參數對象如果不指定盤的話,預設會将檔案剪切到項目目錄下(由上面截圖可以看到);指定盤符的話會根據指定位置剪切到該位置。renameTo()方法相當于剪切加重命名。