『黑馬程序員』---java--IO--File類基礎

----------- android培訓java培訓、java學習型技術博客、期待與您交流! ------------

流對象不能去操作文件夾,不能去操作屬性信息流只能操作數據.文件類的出現正好彌補了流的不足之處.File類是專門操作文件用的


File類

✔用來將文件或者文件夾封裝成對象

✔方便對文件與文件夾的屬性信息進行操作

✔File對象可以作爲參數傳遞給流的構造函數


File類常見的方法:

1,創建.

在指定位置創建文件,如果該文件已經存在,則不創建,返回false和輸出流不一樣,輸出流一建立就創建文件,而且文件如果已經存在,也會覆蓋的.


創建臨時文件,一些軟件中很常見.軟件運行完後,自動刪除.


創建文件夾

Mkdir()創建一級目錄.mkdirs()創建多級目錄

2,刪除



deleteOnExit()在程序退出時刪除指定文件…….
遞歸刪除,文件文件夾…..java刪除不走回車站
import java.io.*;
class deleteDemo{
	public static void main(String[] args){
			File f=new File("D:\\Testdelete");
			remove(f);
	}
	public static void remove(File f){//遞歸循環掉調用自己刪除
			File[] fi=f.listFiles();
			for(int i=0;i<fi.length;i++){
		//一般情況建議先判斷下是否爲隱藏.,有些隱藏文件,java無法訪問
				if(fi[i].isDirectory())
						remove(fi[i]);
				else   //else一定要加上,如果不是目錄才走else.....
					System.out.println(fi[i]+":刪:除:"+fi[i].delete());
			}
			System.out.println(f+"----"+f.delete());
	}
}

3,判斷

exists()判斷文件或目錄是否存在


判斷是否爲文件或文件夾.


isHidden()判斷是否爲隱藏文件


判斷是爲絕對路徑(有詳細的盤符)


4,獲取:


getPath(),返回的是你封裝的路徑.



getAbsoluteFile()只返回絕對路徑不看封裝路徑.[開發中一般用返回爲File,功能比較多]


getPath()getAbsoluteFile()的區別:


返回絕對路徑中的父目錄(上一次目錄),如果獲取相對路徑(沒有具體的盤符),返回null.


List方法(一般返回File[]比較常用,因爲返回File後功能多)


過濾文件

List(FilenameFilter filter)實例:(匿名對象,複寫接口中的accept方法……………………………………..)

其中,涉及到了String的一個判斷末尾是否包含指定字符串的方法endsWith();


listFiles()方法[遞歸],打印出包含子類的文件目錄,實例:

遞歸要注意:

1,限定條件

2,要注意遞歸的次數,儘量避免內存溢出


升級版,每層加上相應的空格數,顯得更有層次感;


listRootS()實例:



其他:




練習:

import java.io.*;
import java.util.*;
//需求:將一個制定目錄下的MP3文件的絕對路徑,存儲到一個文本文件中.
//建立一個MP3文件列表文件
class listDemo{
	public static void main(String[] args)throws Exception{
		File dir=new File("D:/Users/Jack/Music/KuGou");//指引出索引目錄
		List<File> list=new ArrayList<File>();//加你list集合做臨時存儲
		dirToList(list,dir);
		System.out.println(list.size());//打印list集合中的大小
		File file=new File(dir,"list.txt");//指引目標文件
		listToFile(list,file);
	}
	public static void dirToList(List<File> list,File dir){//抽出指引目錄下的所有MP3文件
			//建立臨時File數組臨時存儲,dir下的所有目錄和文件
			File[] fi=dir.listFiles();
			//遍歷該數組,做出抽選.只要結尾爲MP3的文件
			for(File f:fi){
				if(f.isDirectory())
					dirToList(list,f);//判斷是目錄的話,再此調用該方法
				else
					if(f.getName().endsWith(".mp3"))
						list.add(f);
			}
	}
	//將list下的臨時存儲MP3文件寫入文件
	public static void listToFile(List<File> list,File f)throws Exception{
		BufferedWriter bufw=null;
		try{
			bufw=new BufferedWriter(new FileWriter(f));
			//遍歷數組中的File文件,只打印絕對路徑
for(File ff:list){								 bufw.write(ff.getAbsolutePath());
			bufw.newLine();
			bufw.flush();
		}
		}
		catch(Exception e){
			throw e;
		}
		finally{
			try{
				if(bufw!=null)
					bufw.close();
			}
			catch(Exception ee){
				throw ee;			
			}
		}
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章