黑馬程序員_java基礎File類篇Day4

  ----------------------ASP.Net+Android+IOS開發.Net培訓、期待與您交流! ----------------------    


                                                   黑馬程序員_java基礎File類篇Day4

今天學習了文件類File(其實我把文件和流混淆在一起),現在就簡單的對文件的一些細節,基礎操作做一下總結。

題外話(其實除了學習知識外,還要感謝陪伴我的兄弟姐妹們,特別是我的爸爸媽媽爺爺奶。)


File中跨平臺的問題

 

1,當我們寫File f=new File(“c:/demo.txt”);一般我就會這麼寫,但是這有一個問題,它不是跨平臺的,java中給我們提供了一個方法File.separator 它代表的是文件間隔符,當我們這樣寫File f=new File(“c:”+File.separator+”demo.txt”).其實這裏只是指出了,一個跨平臺的例子,還有如:newLine

 

File類常見的方法

 

1,創建,2刪除,3,判斷,4獲取信息

 

創建

 

創建單個文件

File f=new File(“F:/demo.txt”)

If(!f.exists())

{

   f.createNewFile();

}

 

創建文件夾

File f=new File(“F:/demo”)

If(!f.exists())

{

   F.mkdir();//如果創建的是多層文件夾,那麼用mkdirs()

}

 

注意在指定位置創建文件,如果該文件已經存在,則不創建和輸出流不一樣,建立就是創建文件。同時我們也可以將改成File f=new File(“F:/demo”),創建文件夾。

 

刪除

 

有兩個deletedeleteOnExit()

 

分析代碼

 

File f=new File(“F:/demo.txt”)

Code()

F.delete();

上面代碼是有問題的,如果code(),執行異常,那麼F.delete();不能刪除文件的,像我們打開一個視頻,在刪除它,那是不被允許的。

 

但是始終是有辦法的。

如:在File f=new File(“F:/demo.txt”)

後面加上f.deleteOnExit(),告訴虛擬機,等我退出時,幫我刪除這個文件。

 

判斷

獲取信息

列出一個文件夾中的文件

                   File f=new File("F:/");
		   if(f.exists())
		   {
			   File[] fname=f.listFiles();
			   for(int i=0;i<fname.length;i++)
			   {
				   
				     System.out.println("l"+fname.length+"f:"+fname[i].getName()); 
			   }
			   
		   }

但這樣只能把第一層文件列出,如果F:/下還有文件夾呢?這個就要用到遞歸的思想了。

 

核心代碼:

public static void showdir(File f,BufferedWriter bw) throws IOException
	{
		
		if(f.exists())
		{
		File[] file=f.listFiles();
		for(int i=0;i<file.length;i++)
		   {
			 if(file[i].isDirectory())
			{
				showdir(file[i],bw);
			}else
          {
            }

}

在主函數中調用這個函數就行了,如:
             File f=new File("d:/1");
		     FileWriter fr=null;
		     BufferedWriter br=null;
			 fr=new FileWriter("d:/filelist.txt");
			 br=new BufferedWriter(fr);
		     showdir(f,br);

練習:刪除所有文件夾中的內容,最後只是一些空的文件夾。其實這個也是遞歸的思想。
public static void main(String[] args) {
		// TODO Auto-generated method stub
             File f=new File("d:/1");
             diriskong(f);
		
	}
	
	public static void diriskong(File f)
	{
		File[] fs=f.listFiles();
	  	for(int i=0;i<fs.length;i++)
	  	{
	  	   if(fs[i].isDirectory())
	  	   {
	  		 diriskong(fs[i]);
	  	   }
	  	   else
	  	   {
	  		 fs[i].delete();  
	  	   }
	  	}
	}



  ----------------------ASP.Net+Android+IOS開發.Net培訓、期待與您交流! ----------------------    





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