1. 程式人生 > >java IO程式設計(一)檔案操作類:File

java IO程式設計(一)檔案操作類:File

        學習過程中某個知識點長時間不用老是忘記,在此記錄,下次忘記容易複習。        

        在java.io包中,如果要進行檔案自身的操作(例如:建立、刪除等),只能依靠java.io.File類完成。File類中的常用方法在下表中列出

File類常用操作方法
No. 方法 型別 描述
1 public File(String pathname) 構造 c傳遞完整檔案操作路徑
2 public File(File parent,String child) 構造 s設定父路徑與子檔案路徑
3 public boolean createNewFile() throws IOException 普通 c建立新檔案
4 public boolean exists() 普通 判斷給定路徑是否存在
5 public boolean delete() 普通 刪除指定路徑的檔案
6 public File getParentFile() 普通 取得當前路徑的父路徑
7 public boolean mkdirs() 普通 建立多級目錄
8 public long length() 普通 取得檔案大小,以位元組為單位返回
9 public boolean isFile() 普通 判斷給定路徑是否是檔案
10 public boolean isDirectory() 普通 判斷給定路徑是否是目錄
11 public long lastModified() 普通 取得檔案的最後一次修改日期時間
12 public String[] list() 普通 列出指定目錄中的全部內容
13 public File[] listFiles() 普通 列出所有的路徑以File類物件包裝

:File類中提供的方法並不涉及檔案的具體內容,只是針對檔案本身的操作。

        下面通過幾個小例子練習File類中方法的使用

1.給定一個檔案的完整路徑,判斷檔案是否存在,如果存在則將該檔案刪除並提示檔案已刪除,否則建立指定檔案

package com.tjut.IOTest;

import java.io.File;
import java.io.IOException;
/**
 * Windows中檔案分隔符為\
 * Linux中檔案分隔符為/
 * java為了實現跨平臺特性使用常量File.separator來表示分隔符
 * 之所以separator常量沒有大寫,是因為JDK 1.0中常量與變數的定義規則相同
 * @author 竹軒聽雨
 *
 */
public class IOTest01 {
	public static void main(String[] args) throws IOException {
		/**
		 * 例項化File物件
		 * 如果檔案存在則將其刪除,不存在則創造檔案
		 */
		File file = new File("d:" + File.separator + "test.txt");
		//此句在Windows中可替換為File file = new File("d:\\test.txt");
		if(file.exists()) {//如果檔案已存在
			file.delete();//刪除指定檔案
			System.out.println("檔案已刪除");//提示
		} else {//否則
			System.out.println(file.createNewFile());//建立指定檔案
		}
	}

}

2.建立帶路徑的檔案。如果給定的檔案路徑為根路徑則直接利用createNewFile()方法進行建立;如果要建立的檔案存在目錄,那麼無法將其建立,應先建立父路徑再建立檔案

package com.tjut.IOTest;

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

public class IOTest02 {
	/**
	 * 如果檔案路徑不存在則建立路徑
	 * 否則建立指定路徑下的指定檔案
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		File file = new File("d:" + File.separator + "Demo" + File.separator + "Hello" + File.separator + "test.txt");
		if(!file.getParentFile().exists()) {//如果父路徑不存在
			file.getParentFile().mkdirs();//建立父路徑
		}
		System.out.println(file.createNewFile());//建立檔案
	}

}

3.判斷指定路徑的檔案是否存在,如果存在則判斷其是否是檔案,是否是目錄,並輸出其檔案大小及上次修改時間。

package com.tjut.IOTest;

import java.io.File;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;

public class IOTest03 {
	/**
	 * 判斷指定檔案是否存在
	 * 如果存在則列出一系列檔案資訊
	 * @param args
	 */
	public static void main(String[] args) {
		File file = new File("d:" + File.separator + "1.jpg");
		if(file.exists()) {
			System.out.println("是否是檔案:" + file.isFile());
			System.out.println("是否是目錄:" + file.isDirectory());
			System.out.println("檔案大小:" + (new BigDecimal((double)file.length() / 1024 / 1024).divide(new BigDecimal(1),2,BigDecimal.ROUND_HALF_UP) + "M"));
			System.out.println("上次修改時間:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified())));
		}
	}

}

4.列出C盤跟目錄下的所有目錄

package com.tjut.IOTest;

import java.io.File;

public class IOTest04 {
	/**
	 * 列出C盤根目錄下的所有目錄
	 * @param args
	 */
	public static void main(String[] args) {
		File file = new File("c:" + File.separator);
		if(file.isDirectory()) {
			File results[] = file.listFiles();
			for(int i = 0;i < results.length;i++) {
				System.out.println(results[i]);
			}
		}
	}

}

 5.列出C盤根目錄下的所有目錄,包括目錄中的目錄,使用遞迴完成

package com.tjut.IOTest;

import java.io.File;

public class IOTest05 {
	/**
	 * 列出C盤中的所有目錄
	 * 包括目錄中的目錄
	 * 採用遞迴完成
	 * @param args
	 */
	public static void main(String[] args) {
		File file = new File("c:" + File.separator);
		print(file);
	}
	
	public static void print(File file) {
		if(file.isDirectory()) {
			File results[] = file.listFiles();
			if(results != null) {
				for(int i = 0;i < results.length;i++) {
					print(results[i]);
				}
			}
		}
		System.out.println(file);
	}

}