1. 程式人生 > >io操作之File類

io操作之File類

package com.ly.io.file;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

public class file {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		/*
		 * ile類描述的是一個檔案或資料夾。(資料夾也可以稱為目錄)

		 * 該類的出現是對檔案系統的中的檔案以及資料夾進行物件的封裝。可以通過物件的思想來操作檔案以及資料夾。

		 * 可以用面向物件的處理問題,通過該物件的方法,可以得到檔案或資料夾的資訊方便了對檔案與資料夾的屬性資訊進行操作。

		 * 檔案包含很多的資訊:如檔名、建立修改時間、大小、可讀可寫屬性等。
		 * 
		 * 
		 * 
		*/
		
		File file = new File("F:/專案/io/","file.txt");
		//File file = new File("F:/專案/io/file.txt");
		
		System.out.println(file.exists());
		
		try {
			if(file.createNewFile()) {
				System.out.println(file.getName()+"建立成功");
			}else{
				System.out.println("建立失敗");//該檔案或目錄存在時 就不會再次建立
			};
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println("建立失敗2");
			e.printStackTrace();
		}
		
/*		建立的file 所對應的uri地址不存在,所以exists()結果為false,然仍然成功建立了File物件,這時其代表了一個抽象路徑
 * 		構建一個File類的例項並不會在機器上建立一個檔案
 * 		createNewFile 建立一個檔案
 * 		window路徑是\\\頭向左的反斜槓   而這裡的uri是相反的反斜槓
 * 		在Windows中分隔符為'\',在Unix/Linux中分隔符為'/'。

		跨平臺的目錄分隔符

		更專業的做法是使用File.separatorChar,這個值就會根據系統得到的相應的分割符。

		例:new File("c:" + File.separatorChar + "a.txt");
 * 
		*/
		
		File  filea = new File("F:/專案/io/");
		
		File  filec = new File("F:/專案/ioo/");//抽象目錄
		
		System.out.println(filea.isDirectory());
		
		System.out.println(filea.mkdirs());//目錄本來存在所有並不會建立,返回false
		
		filea.delete();
		
		filec.delete();//刪除抽象目錄
		
		System.out.println("是否目錄被刪除成功?"+!filea.isDirectory());
		
		System.out.println("是否目錄被刪除成功?"+!filec.isDirectory());//抽象目錄同樣被刪除成功

		
/*		isDirectory()判斷路徑是否存在,換句話講是否是目錄
 * 		因為   目錄不為空  所以刪除會失敗   

		*/
		
		File fileb = new File("F:/專案/io/","readme.txt");
		File filed = new File("F:/專案/io/","readme2.txt");
		
		System.out.println(fileb.isFile());
		
		System.out.println(fileb.getName()+fileb.length());//length返回型別為long 單位為位元組
		
		fileb.renameTo(filed);
		
		System.out.println(filed.getName()+filed.length());
		
/*		isFile()判斷是否是檔案
 * 		File物件是不可變的。 建立後它始終表示相同的路徑名。當重新命名檔案時,舊的File物件仍然代表原始的路徑名。
 * 		*/
		
		File filee = new File("F:/專案/io");
		
		
		
		
		
		File[] flist = filee.listFiles();//listFiles獲取該目錄下的所有檔案和目錄並返回一個數組
		
		for(File file1 : flist) {//列舉這個陣列
			if(file1.isFile()) {
				
				System.out.println(file1.getName()+"(file)");
			}else if(file1.isDirectory()) {
				
				System.out.println(file1.getName()+"(directory)");
			}
			
		} 
		file file1 = new file();
		
		File[] filef = new File[3] ;
		
		filef[0] = filee;
	
		file1.listAllfiles(filef, "xml");
	}
	
	public void listAllfiles(File[] file,String end) {//判斷該數組裡的file是否有以end結尾的
		
		for(File fil:file) {
			
			String fname = fil.getName().toLowerCase();//filename都化為小寫字母
			if(fname.endsWith(end)) {//判斷是否以end結尾
				System.out.println(fil.getName()+"end with "+end);
			}
			
		}
		
		
	}
 
}