java中的IO操作總結(二)


文件的操作

這一節我們來討論關於文件自身的操作

不浪費唾沫了,用代碼說話……

 

實例1:創建文件對象

import java.io.File;

public class Demo {
	public static void main(String[] args) {
		//創建要操作的文件路徑和名稱
        //其中,File.separator表示系統相關的分隔符,Linux下為:/  Windows下為:\\
		//path在此程序里面代表父目錄,不包含子文件
		String path = File.separator + "home" + File.separator + "siu" + 
				      File.separator + "work" + File.separator;
		
		//childPath在此程序里面代表子目錄,包含子文件
		String childPath = File.separator + "home" + File.separator + "siu" + 
			      		   File.separator + "work" + File.separator + "demo.txt";
		
		//用父目錄和子文件分隔的方式構造File對象
		//也可以寫成 new File("/home/siu/work","test.txt");
		File f1 = new File(path,"test.txt");
		
		//使用絕對路徑來構造File對象
		//也可以寫成new File("/home/siu/work/demo.txt");
		File f2 = new File(childPath);
		
		//創建父目錄的文件對象
		File d = new File(path);
		//使用已有父目錄對象和子文件構建新的File對象
		File f3 = new File(d,"hello.txt");
		
		System.out.println("f1的路徑" + f1);
		System.out.println("f2的路徑" + f2);
		System.out.println("f3的路徑" + f3);
	}
}

編譯后,顯示各個File對象所指向的絕對路徑

 

實例2:創建和刪除文件

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

public class Demo {
	public static void main(String[] args) {

		String Path = File.separator + "home" + File.separator + "siu" + 
			      		   File.separator + "work" + File.separator + "demo.txt";
		
		File f = new File(Path);
		
		try {
			/*因為創建和刪除文件涉及到底層操作,所以有可能會引發異常*/
			
			//如果創建成功則會返回true
			//如果已存在該文件,則創建不成功,返回flase,別以為會覆蓋
			System.out.println("創建文件:" + f.createNewFile());
			
			//刪除文件,成功返回true,否則返回flase
			System.out.println("刪除文件:" + f.delete());
			
			//此方法表示在虛擬機退出時刪除文件
			//原因在於:程序運行時有可能發生異常造成直接退出
			//清理殘余很有必要~!
			f.deleteOnExit();
		} catch (IOException e) {
			e.printStackTrace();
		}	
	}
}

 你看,創建成功,所以返回true,因為已經創建好了,所以刪除也能成功

 

實例3:文件的判斷和測試

import java.io.File;
 
public class Demo {
    public static void main(String[] args) {
 
        String Path = File.separator + "home" + File.separator + "siu" +
                           File.separator + "work" + File.separator + "Demo.txt";
         
        File f = new File(Path);
     
        //判斷文件是否可執行
        System.out.println("f是否可執行:" + f.canExecute());
         
        //判斷文件是否存在
        System.out.println("f是否存在:" + f.exists());
         
        //判斷文件是否可讀
        System.out.println("f是否可讀:" + f.canRead());
         
        //判斷文件是否可寫
        System.out.println("f是否可寫:" + f.canWrite());
         
        //判斷文件是否為絕對路徑名
        System.out.println("f是否絕對路徑:" + f.isAbsolute());
        
        //判斷文件是否為一個標准文件
        System.out.println("f是否為標准文件:" + f.isFile());
        
        //判斷文件是否為一個目錄
        System.out.println("f是否為目錄:" + f.isDirectory());
         
        //判斷文件是否隱藏
        System.out.println("f是否隱藏:" + f.isHidden());   
         
    }  
}

這里使用不同的文件做測試便可,設置文件屬性什么的也很簡單

需要注意的是,如果使用isFlie()和isDirectory()進行測試,則先要確定文件對象是否已經創建

 

實例4:創建目錄

import java.io.File;

public class Demo {
	public static void main(String[] args) {
		String path = File.separator + "home" + File.separator + "siu" + 
					  File.separator + "work" + File.separator;
		
		//path在此處作為父目錄存在
		File f1 = new File(path,"/abc");
		File f2 = new File(path,"/d/e/f/g");
		
		//創建一個目錄
		System.out.println(f1.mkdir());
		
		//遞歸創建目錄
		System.out.println(f2.mkdirs());
		
	}	
}

 注意看路徑

 

實例5:獲取文件信息

import java.io.File;

public class Demo {
	public static void main(String[] args) {
		String path = File.separator + "home" + File.separator + "siu" + 
					  File.separator + "work" + File.separator + "demo.txt";
		
		File f = new File(path);
		
		//返回文件的絕對路徑
		//此處返回值為String
		System.out.println("f的絕對路徑名:" + f.getAbsolutePath());
		
		//返回文件的絕對路徑
		//此處返回值為File
		System.out.println("f的絕對路徑對象:" + f.getAbsoluteFile());
		
		//返回文件或目錄的名稱
		System.out.println("f的名稱:" + f.getName());
		
		//返回文件的相對路徑
		//構造函數中封裝的是什么路徑,就返回什么路徑
		System.out.println("f的路徑:" + f.getPath());
		
		//返回父目錄的路徑
		//如果在構造函數中的路徑不是絕對路徑,那么此處返回null
		System.out.println("f的父目錄:" + f.getParent());
		
	}	
}

 這些都是比較常用並且功能類似的方法,至於不常用的信息獲取參考API即可

 

實例6:列出文件系統的根目錄

import java.io.File;

public class Demo {
	public static void main(String[] args) {
		//listRoots()是一個靜態方法,返回文件數組
		File[] files = File.listRoots();
		//foreach循環打印File對象
		for (File x : files) {
			System.out.println(x);
		}
	}
}

因為本地環境是Linux,所以根目錄只有一個 /,如果是Windows就能列出你的所有盤符

 

實例7:列出目錄下的所有文件

import java.io.File;

public class Demo {
	public static void main(String[] args) {
		String path = File.separator + "opt" + File.separator;
		
		File f = new File(path);
		
		//方式一:list()
		//返回一個包含指定目錄下所有文件名的字符串數組
		//如果不是一個目錄則返回null
		String[] files = f.list();
		for (String x : files) {
			System.out.println(x);
		}
		
		//方式二:listFiles()
		//返回File數組
		/*
		File[] files = f.listFiles();
		for (File x : files) {
			//如果需要包含路徑,則直接打印x即可
			System.out.println(x.getName());
		}
		*/
		
	}
}

 兩者都是返回目錄下的所有文件名,但是第二種方式更實用,為遞歸列出文件做鋪墊

 

實例8:遞歸列出目錄下所有文件

import java.io.File;

public class Demo {
	public static void main(String[] args) {
		String path = File.separator + "opt" + File.separator;
		
		File f = new File(path);
		//調用下面的遞歸方法
		print(f);
	}
	
	//用遞歸的方式打印目錄列表
	public static void print(File f) {
		if(f.isDirectory()){
			File[] files = f.listFiles();
			for(File x : files) {
				print(x);
			}
		} else {
			System.out.println(f);
		}
	}
}

好吧,打印內容太多了,意思意思就行了

 

關於文件的基本操作就講到這,想到再繼續補充……

下續章節將講解java io的其他操作

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM