Java基礎【07】常用API——File相關API

java.io.File
File表示一個抽象路徑,簡單的理解爲可以訪問文件系統中的一個文件或目錄。
使用File我們可以:
 * 1:訪問其表示的文件或目錄的屬性信息(名字,大小,修改時間等)。
 * 2:可以操作文件或目錄(創建,刪除)。
 * 3:可以訪問一個目錄中的所有子項。
但是不能訪問一個文件裏面的數據。

1.讀取文件信息的相關方法

package file;

import java.io.File;

public class FileDemo {
	public static void main(String[] args) {
		/*
		 * 訪問項目目錄下的test.txt文件
		 * 在使用路徑時,通常我們都使用相對路徑,因爲
		 * 絕對路徑的指向太明確,導致的問題是不可變動,
		 * 那麼在跨平臺時會出現很多問題。
		 * 相對目錄比較靈活,但是要清楚相對的路徑是哪裏,
		 * 而相對的路徑要基於程序的運行環境而定。對於我們
		 * 現在都是在eclipse中運行程序而言,那麼其表示的
		 * "當前目錄"就是當前程序所在的項目目錄。
		 */
		File file = new File("./test.txt");
		
		String name = file.getName();//獲取文件名
		System.out.println(name);
		
		long length = file.length();//獲取文件大小
		System.out.println(length+"字節");
		
		boolean cr = file.canRead();//獲取文件的可讀狀態
		boolean cw = file.canWrite();//獲取文件的可寫狀態
		System.out.println("可讀:"+cr);
		System.out.println("可寫:"+cw);
		
		boolean ih = file.isHidden();//獲取文件的隱藏狀態
		System.out.println("是否隱藏:"+ih);
		
                /* getAbsolutePath得到的是全路徑。
                 * 如果構造參數是相對路徑,則返回當前目錄的絕對路徑+構造參數路徑;
                 * 如果是絕對路徑則直接返回
                 */
		String path = file.getAbsolutePath();
		System.out.println(path);
	}
}

2. 判斷文件是否存在:exists() 、創建一個新文件:createNewFile()

package file;

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

/**
 * 使用File創建一個新文件
 * @author adminitartor
 */
public class CreateNewFileDemo {
	public static void main(String[] args) throws IOException {
		/*
		 * 在項目目錄下創建一個名爲:demo.txt的文件
		 * 1:先創建一個File表示該文件
		 * 2:判斷該文件是不存在的
		 * 3:創建該文件
		 */
		//1
		File file = new File("./demo.txt");
		//2
		if(!file.exists()){
			file.createNewFile();
			System.out.println("文件已創建!");
		}else{
			System.out.println("文件已存在!");
		}
	}
}

3.刪除一個文件:delete()

package file;

import java.io.File;

/**
 * 刪除一個文件
 * @author adminitartor
 */
public class DeleteFileDemo {
	public static void main(String[] args) {
		/*
		 * 將當前目錄中的demo.txt文件刪除
		 */
		File file = new File("./demo.txt");
		if(file.exists()){
			file.delete();
			System.out.println("文件已刪除!");
		}else{
			System.out.println("文件不存在!");
		}
	}
}

4.創建一個目錄:mkdir()

package file;

import java.io.File;

/**
 * 創建一個目錄
 * @author adminitartor
 */
public class MkDirDemo {
	public static void main(String[] args) {
		/*
		 * 在項目目錄下創建一個名爲:demo的目錄
		 * 
		 * 在相對路徑中"./"可以忽略不寫,默認就是從當前
		 * 目錄開始
		 */
//		File dir = new File("./demo");
		File dir = new File("demo");
		if(!dir.exists()){
			dir.mkdir();
			System.out.println("目錄已創建!");
		}else{
			System.out.println("目錄已存在!");
		}
	}
}

5.創建一個多級目錄:mkdirs()

package file;

import java.io.File;

/**
 * 創建一個多級目錄
 * @author adminitartor
 */
public class MkDirsDemo {
	public static void main(String[] args) {
		/*
		 * 在當前目錄下創建目錄:a/b/c/d/e/f
		 * 
		 * mkdir在創建目錄時要求其所在的父目錄必須存在
		 * 否則創建不成功,而mkdirs則會將所有不存在的父
		 * 目錄自動創建出來。
		 */
		File dir = new File("a/b/c/d/e/f");
		if(!dir.exists()){
			dir.mkdirs();
			System.out.println("創建完畢!");
		}else{
			System.out.println("目錄已存在!");
		}
	}
}

6.訪問一個目錄中的所有子項:listFiles()

package file;

import java.io.File;

/**
 * 訪問一個目錄中的所有子項
 * @author adminitartor
 */
public class ListFilesDemo {
	public static void main(String[] args) {
		/*
		 * 獲取當前目錄中的所有子項
		 */
		File dir = new File(".");
		/*
		 * boolean isFile()
		 * 判斷當前File表示的是否爲一個文件
		 * 
		 * boolean Directory()
		 * 判斷當前File表示的是否爲一個目錄
		 */
		if(dir.isDirectory()) {
			//獲取所有子項
			File[] subs = dir.listFiles();
			for(int i=0;i<subs.length;i++){
				File sub = subs[i];
				System.out.println(sub.getName());
			}
		}
	}
}

7.重載的listFiles()方法,可以傳入一個文件過濾器

package file;

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

/**
 * File提供了一個重載的listFiles方法,可以傳入一個文件
 * 過濾器,然後只將該目錄中滿足過濾器要求的子項返回。
 * @author adminitartor
 */
public class ListFilesDemo2 {
	public static void main(String[] args) {
		/*
		 * 獲取項目目錄下所有名字是以"."開頭的子項
		 */
		File dir = new File(".");
//		FileFilter filter = new MyFilter();
		/*
		 * 使用匿名內部類形式創建文件過濾器
		 * 過濾條件爲:只獲取文件。
		 */
		FileFilter filter = new FileFilter(){
			public boolean accept(File file) {
				return file.isFile();
			}
			
		};
		
		File[] subs = dir.listFiles(filter);
		for(int i=0;i<subs.length;i++){
			System.out.println(subs[i].getName());
		}
	}
}

8.刪除目錄:delete()

package file;

import java.io.File;

/**
 * 刪除目錄
 * @author adminitartor
 */
public class DeleteDirDemo {
	public static void main(String[] args) {
		/*
		 * 刪除項目目錄下的demo目錄
		 * delete方法在刪除目錄時有一個前提條件,即:
		 * 目錄必須是一個空目錄纔可以刪除
		 */
		File dir = new File("demo");
		if(dir.exists()){
			dir.delete();
			System.out.println("目錄已刪除");
		}else{
			System.out.println("目錄不存在!");
		}
	}
}

 

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