目標
1)掌握File類作用
2)可以使用file類中方法對文件進行讀寫操作。
File類
唯一與文件有關的類。使用file類可進行創建或刪除操作,要想使用File類,首先觀察File類的構造方法。
public File(String pathname);實例化File類的時候,必須設置好路徑。
常量::
public staitc final String pathSeparator;
明明使用了static final定義的常量,這里為什么使用了小寫方式。實際上這屬于JAVA的歷史遺留問題。
實例操作一:創建一個新文件。
創建文件:
public boolean creatNewFile() throws IOExcetion
用以上方法就可以創建文件,但是注意要有異常處理。
在D盤創建一個文件:
importjava.io.File ;importjava.io.IOException ;public classFileDemo01{public static voidmain(String args[]){
File f= new File("d:\\test.txt") ; // 實例化File類的對象,給出路徑
try{
f.createNewFile() ;// 創建文件,根據給定的路徑創建
}catch(IOException e){
e.printStackTrace() ;//輸出異常信息
}
}
};
運行結果:
步驟:首先創建File對象,創建對象的時候要給出文件路徑,然后用這個對象調用creatNewFile()方法,注意調用方法時候要有異常處理。
以上完成了文件創建功能,但是開發中以上程序編寫肯定會出現錯誤,在各個操作系統中,路徑分隔符是不一樣的。例如:
windows使用反斜杠:"\"
Linux中使用正斜杠:"/"
要想讓JAVA可移植增強,最好讓操作系統自動使用分隔符。
packageThread1;importjava.io.File;importjava.io.IOException;public classdemo1{public static voidmain(String args[])
{
System.out.println("pathSeparator:" + File.pathSeparator) ; //調用靜態常量
System.out.println("separator:" + File.separator) ; //調用靜態常量
}
}
運行結果:
pathSeparator:;
separator:\
要想保持可移植性,在編寫的時候應該使用File類中的常量。修改之前程序。
packageThread1;importjava.io.File;importjava.io.IOException;public classdemo1{public static voidmain(String args[])
{
File f= new File("d:"+File.separator+"test.txt") ; //實例化File類的對象
try{
f.createNewFile() ;//創建文件,根據給定的路徑創建
}catch(IOException e){
e.printStackTrace() ;//輸出異常信息
}
}
}
注意:在操作文件的時候一定要注意分隔符,使用File.separator表示。
刪除一個指定的文件
刪除文件方法:
public boolean delete();
將之前建立好的文件刪除掉。
packageThread1;importjava.io.File;importjava.io.IOException;public classdemo1{public static voidmain(String args[])
{
File f= new File("d:"+File.separator+"test.txt") ; // 實例化File類的對象
f.delete() ; // 刪除文件
}
}
運行結果:
確實刪除了文件。
此時文件確實刪除了,但是刪除之前最好進行判斷文件是不是存在。
在File類中可以使用exists()方法判斷一個文件是否存在。
public boolean exists();
使用以上代碼增強之前程序。
packageThread1;importjava.io.File;importjava.io.IOException;public classdemo1{public static voidmain(String args[])
{
File f= new File("d:"+File.separator+"test.txt") ; //實例化File類的對象
if(f.exists()){ // 如果文件存在則刪除
f.delete() ; //刪除文件
}elseSystem.out.println("文件不存在");
}
}
運行結果:
文件不存在
由于之前已經刪除了,所以這里文件不存在。
綜合創建,刪除文件的操作
要求:給定一個路徑,如果文件存在刪除,不存在,創建之。
importjava.io.File ;importjava.io.IOException ;public classFileDemo06{public static voidmain(String args[]){
File f= new File("d:"+File.separator+"test.txt") ; //實例化File類的對象
if(f.exists()){ //如果文件存在則刪除
f.delete() ; //刪除文件
}else{try{
f.createNewFile() ;//創建文件,根據給定的路徑創建
}catch(IOException e){
e.printStackTrace() ;//輸出異常信息
}
}
}
};
提示:對于文件的后綴可有可無。
創建文件夾
使用mkdir()方法創建文件夾、
public boolean mkdir();
實例;
importjava.io.File ;importjava.io.IOException ;public classFileDemo07{public static voidmain(String args[]){
File f= new File("d:"+File.separator+"mldn") ; //實例化File類的對象
f.mkdir() ; //創建文件夾
}
};
運行結果:創建成功一個名為mldn的文件夾。
列出指定目錄的全部文件。
如果給出一個目錄,可以列出目錄中全部內容,但是列出的方法存在兩個:
1,以字符串數組的形式返回。
public String [] list();
2,以File數組形式返回:
pulbic File [] listFiles();
操作一:list()方法:
packageThread1;importjava.io.File;importjava.io.IOException;public classdemo1{public static voidmain(String args[])
{
File f= new File("d:"+File.separator) ; //實例化File類的對象
String str[] = f.list() ; // 列出給定目錄中的內容
for(int i=0;i
System.out.println(str[i]) ;
}
}
}
運行結果:
$RECYCLE.BIN
360SoftMove
BDSoftMgrData
Config.Msi
FDownload
MSOCache
Program Files
System Volume Information
TrainingPackage_dna
TrainingPackage_zcgl
辦公軟件
我的文檔
搜狗高速下載
搞笑
文件清理.bat
編程軟件
以上只是列出全部文件名字。
操作2,使用listFiles()方法列出。
packageThread1;importjava.io.File;importjava.io.IOException;public classdemo1{public static voidmain(String args[])
{
File f= new File("d:"+File.separator) ; //實例化File類的對象
File files[] = f.listFiles() ; // 列出全部內容,注意需要一個files對象數組接受這個返回數組。
for(int i=0;i
System.out.println(files[i]) ;
}
}
}
運行結果:
d:\$RECYCLE.BIN
d:\360SoftMove
d:\BDSoftMgrData
d:\Config.Msi
d:\FDownload
d:\GSP平臺
d:\GS管理套件
d:\MSOCache
d:\Program Files
d:\System Volume Information
d:\TrainingPackage_dna
d:\TrainingPackage_zcgl
d:\久其培訓
d:\辦公軟件
d:\我的文檔
d:\搜狗高速下載
d:\搞笑
d:\文件清理.bat
d:\編程軟件
d:\藍橋杯試題
此時列出的是完整的路徑。這樣對于程序本身是很容易操作的。
判斷一個給定的路徑是否目錄。
在File類中直接使用方法:public boolean?isDirectory();
packageThread1;importjava.io.File;importjava.io.IOException;public classdemo1{public static voidmain(String args[])
{
File f= new File("d:"+File.separator) ; //實例化File類的對象
if(f.isDirectory()){ //判斷是否是目錄
System.out.println(f.getPath() + "路徑是目錄。") ;
}else{
System.out.println(f.getPath()+ "路徑不是目錄。") ;
}
}
}
運行結果:
d:\路徑是目錄。
列出指定目錄的全部內容
如果給定一個目錄,則講目錄的全部文件列出來,但是列的時候可能存在子文件夾,子文件夾也有子文件夾。
應該采用遞歸的形式。
packageThread1;importjava.io.File;importjava.io.IOException;public classdemo1{public static voidmain(String args[]){
File my= new File("d:" + File.separator+"FDownload") ; //操作路徑
print(my) ;
}public static void print(File file){ // 遞歸調用
if(file!=null){ //判斷對象是否為空
if(file.isDirectory()){ //如果是目錄
File f[] = file.listFiles() ; // 列出全部的文件
if(f!=null){ //判斷此目錄能否列出
for(int i=0;i
print(f[i]) ;// 因為給的路徑有可能是目錄,所以,繼續判斷,繼續遞歸。
}
}
}else{
System.out.println(file) ;//輸出路徑
}
}
}
};
運行結果:
d:\FDownload\合并\0001.中國網絡電視臺-《詩詞中國》 第一集 詩的起源[高清版].mp4
d:\FDownload\合并\0001.中國網絡電視臺-《詩詞中國》 第七集 親情詩[高清版].mp4
d:\FDownload\合并\0001.中國網絡電視臺-《詩詞中國》 第三集 春江花月夜[高清版].mp4
d:\FDownload\合并\0001.中國網絡電視臺-《詩詞中國》 第二集 楓橋夜泊[高清版].mp4
d:\FDownload\合并\0001.中國網絡電視臺-《詩詞中國》 第五集 民歌[高清版].mp4
d:\FDownload\合并\0001.中國網絡電視臺-《詩詞中國》 第六集 懷鄉詩[高清版].mp4
d:\FDownload\合并\0001.中國網絡電視臺-《詩詞中國》 第四集 黃鶴樓與鸛雀樓[高清版].mp4
這里用到了,判斷路徑是否為文件夾:isDirection()。列出文件夾下目錄方法:listFiles()。還有遞歸。