File
- File類描述的是一個文件或文件夾救巷。(文件夾也可以稱為目錄)
- 該類的出現(xiàn)是對文件系統(tǒng)的中的文件以及文件夾進(jìn)行對象的封裝艰猬。可以通過對象的思想來操作文件以及文件夾粪薛。
- 可以用面向?qū)ο蟮奶幚韱栴}纺铭,通過該對象的方法寇钉,可以得到文件或文件夾的信息方便了對文件與文件夾的屬性信息進(jìn)行操作舶赔。
- 文件包含很多的信息:如文件名扫倡、創(chuàng)建修改時間、大小竟纳、可讀可寫屬性等撵溃。
字段
static String pathSeparator
與系統(tǒng)有關(guān)的路徑分隔符,為了方便锥累,它被表示為一個字符串缘挑。
static char pathSeparatorChar
與系統(tǒng)有關(guān)的路徑分隔符。
static String separator
與系統(tǒng)有關(guān)的默認(rèn)名稱分隔符桶略,為了方便语淘,它被表示為一個字符串。
static char separatorChar
與系統(tǒng)有關(guān)的默認(rèn)名稱分隔符际歼。
System.out.println(File.pathSeparator); //;
System.out.println(File.pathSeparatorChar); //;
System.out.println(File.separator); //\(Windows下)
System.out.println(File.separatorChar); //\(Windows下)
構(gòu)造方法摘要
File(File parent, String child)
根據(jù) parent 抽象路徑名和 child 路徑名字符串創(chuàng)建一個新 File 實例惶翻。
File(String pathname)
通過將給定路徑名字符串轉(zhuǎn)換為抽象路徑名來創(chuàng)建一個新 File 實例。
File(String parent, String child)
根據(jù) parent 路徑名字符串和 child 路徑名字符串創(chuàng)建一個新 File 實例鹅心。
方法
boolean canExecute()
測試應(yīng)用程序是否可以執(zhí)行此抽象路徑名表示的文件吕粗。
boolean canRead()
測試應(yīng)用程序是否可以讀取此抽象路徑名表示的文件。
boolean canWrite()
測試應(yīng)用程序是否可以修改此抽象路徑名表示的文件巴帮。
boolean createNewFile()
當(dāng)且僅當(dāng)不存在具有此抽象路徑名指定名稱的文件時溯泣,不可分地創(chuàng)建一個新的空文件。
File f = new File("a.java");
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
static File createTempFile(String prefix, String suffix)
在默認(rèn)臨時文件目錄中創(chuàng)建一個空文件榕茧,使用給定前綴和后綴生成其名稱垃沦。 prefix 參數(shù)至少必須是三個字節(jié)長
static File createTempFile(String prefix, String suffix, File directory)
在指定目錄中創(chuàng)建一個新的空文件,使用給定的前綴和后綴字符串生成其名稱用押。 prefix 參數(shù)至少必須是三個字節(jié)長
File f = new File(".\\");
try {
File.createTempFile("abc", ".java", f);
} catch (IOException e) {
e.printStackTrace();
}
在項目根目錄新建了文件 abc1006817782508133744.java
boolean mkdir()
創(chuàng)建此抽象路徑名指定的目錄肢簿。 父文件夾必須存在
boolean mkdirs()
創(chuàng)建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄蜻拨。 父文件夾可以不存在
File f = new File("C:\\Users\\Administrator\\Desktop\\11\\12\\123");
f.mkdirs();
boolean delete()
刪除此抽象路徑名表示的文件或目錄池充。
不放入回收站直接刪除,找不回的那種缎讼,刪除文件夾是只能刪除空文件夾
public static void main(String[] args) {
File f = new File("C:\\Users\\Administrator\\Desktop\\11");
deleteFile(f);
}
private static void deleteFile(File f) {
File[] list = f.listFiles();
if(list != null) {
for (File file : list) {
if(file.isDirectory()) {
deleteFile(file);
}
file.delete();
}
}
f.delete();
}
void deleteOnExit()
在虛擬機終止時收夸,請求刪除此抽象路徑名表示的文件或目錄。
調(diào)用時不會刪除血崭,在虛擬機終止時刪除
boolean renameTo(File dest)
重新命名此抽象路徑名表示的文件卧惜。
當(dāng)前目錄下重命名厘灼,不同路徑復(fù)制
long length()
返回由此抽象路徑名表示的文件的長度。
boolean isDirectory()
測試此抽象路徑名表示的文件是否是一個目錄咽瓷。
boolean isFile()
測試此抽象路徑名表示的文件是否是一個標(biāo)準(zhǔn)文件设凹。
boolean isHidden()
測試此抽象路徑名指定的文件是否是一個隱藏文件。
String[] list()
返回一個字符串?dāng)?shù)組茅姜,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄闪朱。
String[] list(FilenameFilter filter)
返回一個字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄钻洒。
File[] listFiles()
返回一個抽象路徑名數(shù)組奋姿,這些路徑名表示此抽象路徑名表示的目錄中的文件。
File[] listFiles(FileFilter filter)
返回抽象路徑名數(shù)組航唆,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄胀蛮。
File[] listFiles(FilenameFilter filter)
返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄糯钙。
static File[] listRoots()
列出可用的文件系統(tǒng)根粪狼。
FilenameFilter實現(xiàn)此接口的類實例可用于過濾器文件名
FileFilter用于抽象路徑名的過濾器。
String getName()
返回由此抽象路徑名表示的文件或目錄的名稱任岸。
public static void main(String[] args) {
File f = new File("./b.txt");
System.out.println(f.getName());
}
//b.txt
此時如果沒有該文件文件再榄,執(zhí)行時依然能獲取到名字,因為虛擬機在內(nèi)存中創(chuàng)建了文件
路徑
路徑就是文件或文件夾所在的位置享潜。
路徑分割符
上下級文件夾之間使用分隔符分開:
在Windows中分隔符為''困鸥,在Unix/Linux中分隔符為'/'。-
跨平臺的目錄分隔符
更專業(yè)的做法是使用File.separatorChar剑按,這個值就會根據(jù)系統(tǒng)得到的相應(yīng)的分割符疾就。例:new File("c:" + File.separatorChar + "a.txt"); 注意,如果是使用"\"艺蝴,則需要進(jìn)行轉(zhuǎn)義猬腰,寫為"\\"才可以,如果是兩個"\"猜敢,則寫為"\\\\"姑荷。
絕對路徑與相對路徑
-
絕對路徑
- 對于UNIX平臺,絕對路徑名的前綴是"/"缩擂。相對路徑名沒有前綴鼠冕。
- 對于Windows平臺,絕對路徑名的前綴由驅(qū)動器號和一個":"組成胯盯,例"c:\..."懈费。相對路徑?jīng)]有盤符前綴。
-
相對路徑:
相對路徑是指相對于某位置的路徑博脑,是指相對于當(dāng)前目錄憎乙。
在執(zhí)行Java程序時薄坏,相對路徑為執(zhí)行java命令時當(dāng)前所在的目錄。File file = new File("a.txt"); File file = new File(".\\a.txt"); 都表示本目錄下文件