File類常用API介紹

java.io.File類用於表示文件/目錄。

程序員可通過File類在硬盤上操作文件和目錄。File類只能表示文件/目錄的信息(如名稱、大小),不能用於文件的訪問。

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

public class FileDemo {
	
	public static void main(String[] args) {
		/*
		 * 假設在F盤下有一個文件Java
		 * 由於\是轉義字符,所以在路徑中要用雙斜槓
		 */
		File file1=new File("F:\\Java");  //File類的構造函數 
		/*
		 * File.separator用於設置分隔符 這樣任何系統都認識中間的分隔符
		 */
		File file11=new File("F:"+File.separator+"Java");
		System.out.println(file1.exists());   //判斷文件/文件夾是否存在     true
		System.out.println(file11.exists());  //判斷文件/文件夾是否存在     true
		File file2=new File("F:\\Java\\IO\\File");
		if(!file2.exists()){
			/*
			 * 創建多級目錄用mkdirs(),創建一級目錄用mkdir()
			 */
			file2.mkdirs();//文件不存在,自動創建IO和File
			//file2.mkdir();  //僅僅創建IO
		}
		else{
			file2.delete();//如果目錄存在,刪除文件夾File
		}
		
		
		/*
		 * 判斷是否是一個目錄
		 * 如果是目錄返回true,如果不是目錄或者目錄不存在返回false
		 */
		System.out.println(file1.isDirectory());  //true
		
		
		/*
		 * 判斷是否是一個文件
		 */
		System.out.println(file1.isFile());  //false
		File file3=new File("F:\\Java\\IO\\File\\日記1.txt");
		//File file33=new File("F:\\Java\\IO\\File","日記1.txt"); //功能與上面的語句相同
		System.out.println(file3.isFile());  //false
		if(!file3.exists())
			try{
				file3.createNewFile();  //自動添加異常處理
			}catch(IOException e){
				e.printStackTrace();
			}
		else
			file3.delete();
		System.out.println(file3.isFile());  //true

		
		/*
		 * 常用的File對象的API
		 */
		//直接打印file1,打印的是file1.toString()的內容
		System.out.println(file1); //F:\Java
		System.out.println(file1.getAbsolutePath());//功能與上面的語句相同
		
		System.out.println(file1.getName());//打印最後的目錄名      Java
		System.out.println(file1.getParent());//得到父目錄的路徑     F:\
		System.out.println(file1.getParentFile());//功能與上面的語句相同     
		
		System.out.println(file3.getName());   //日記1.txt
		System.out.println(file3.getParent()); //F:\Java\IO\File
		System.out.println(file3.getParentFile());
	}
}

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

/*
 * 列出File類的一些常用操作 比如過濾、遍歷等操作
 * 假設F盤下有一個文件夾名爲java,java下有一文件夾名爲IO
 * IO下有一文件夾名爲new,還有一文件名爲new.txt
 * new下有一文件夾名爲new1,還有一文件名爲new1.txt
 */
class FileUtils {
	/**
	 * 列出指定目錄下(包括其子目錄下)的所有文件
	 * @param dir
	 * @throws IOException
	 */
	public static void listDirectory(File dir)throws IOException{
		if(!dir.exists()){
			throw new IllegalArgumentException("目錄:"+dir+"不存在.");
		}
		//list()方法用於列出當前目錄下文件名和文件夾名
		String[] filenames=dir.list();
		System.out.println("目錄"+dir+"下的文件名和文件夾名:");
		for(String f:filenames){
			System.out.println(f);  //不包含子目錄下的文件名和文件夾名    
		}
		/*System.out.println("目錄"+dir+"的子目錄:");
		for(String f:filenames){  
			System.out.println(dir+"\\"+f);   
		}*/ //該註釋掉的內容與下面的listFiles()方法功能相同
		
		//listFiles()方法用於返回子目錄
		File[] files=dir.listFiles();  
		System.out.println("目錄"+dir+"的子目錄:");
		for(File file:files){
			System.out.println(file);
		}
		System.out.println();
		if(files!=null&&files.length>0){ //files!=null用來判斷是否有子目錄
			for(File file:files){
				if(file.isDirectory()){
					//遞歸
					System.out.println("將目錄 "+file+" 傳給listDirectory()進行遞歸:");
					listDirectory(file);
				}
			}
		}
	}
}
public class FileUtilsTest{
	public static void main(String[] args)throws IOException{
		FileUtils.listDirectory(new File("F:\\Java"));
	}
}

運行結果:

目錄F:\Java下的文件名和文件夾名:
IO
XML
字符編碼
目錄F:\Java的子目錄:
F:\Java\IO
F:\Java\XML
F:\Java\字符編碼

將目錄 F:\Java\IO 傳給listDirectory()進行遞歸:
目錄F:\Java\IO下的文件名和文件夾名:
new
new.txt
目錄F:\Java\IO的子目錄:
F:\Java\IO\new
F:\Java\IO\new.txt

將目錄 F:\Java\IO\new 傳給listDirectory()進行遞歸:
目錄F:\Java\IO\new下的文件名和文件夾名:
new1
new1.txt
目錄F:\Java\IO\new的子目錄:
F:\Java\IO\new\new1
F:\Java\IO\new\new1.txt

將目錄 F:\Java\IO\new\new1 傳給listDirectory()進行遞歸:
目錄F:\Java\IO\new\new1下的文件名和文件夾名:
目錄F:\Java\IO\new\new1的子目錄:

將目錄 F:\Java\XML 傳給listDirectory()進行遞歸:
目錄F:\Java\XML下的文件名和文件夾名:
books.txt
books.xml
目錄F:\Java\XML的子目錄:
F:\Java\XML\books.txt
F:\Java\XML\books.xml

將目錄 F:\Java\字符編碼 傳給listDirectory()進行遞歸:
目錄F:\Java\字符編碼下的文件名和文件夾名:
目錄F:\Java\字符編碼的子目錄:

發佈了60 篇原創文章 · 獲贊 12 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章