1. 程式人生 > >java基礎之File類

java基礎之File類

File類是java.io包中很重要的一個類;

File類的物件可以表示檔案,還可以表示目錄,在程式中一個File類物件可以代表一個檔案或目錄;

File物件可以對檔案或目錄的屬性進行操作,如:檔名、最後修改日期、檔案大小等;

File物件無法操作檔案的具體資料,即不能直接對檔案進行讀/寫操作。

---------------------------------------------------------------------------------------------------

建立File物件三種方法:

//在當前目錄下建立一個與aaa.txt檔名相關聯的檔案物件
File f1 = new File("aaa.txt");
//指明詳細的路徑以及檔名,請注意雙斜線或用反斜槓
File f2 = new File("D:\\Java\\Hello.java");
//指明詳細的路徑以及目錄名,請注意雙斜線
File f3 = new File("D:/Java");

---------------------------------------------------------------------------------------------------

建立功能
public boolean createNewFile()建立檔案 如果存在這樣的檔案,就不建立了
public boolean mkdir()建立資料夾 如果存在這樣的資料夾,就不建立了
public boolean mkdirs()建立資料夾,如果父資料夾不存在,會幫你創建出來
刪除功能
public boolean delete()
重新命名功能
public boolean renameTo(File dest)
判斷功能
 public boolean isDirectory():判斷是否是目錄
 public boolean isFile():判斷是否是檔案
 public boolean exists():判斷是否存在
 public boolean canRead():判斷是否可讀
 public boolean canWrite():判斷是否可寫
 public boolean isHidden():判斷是否隱藏
基本獲取功能
public String getAbsolutePath():獲取絕對路徑
public String getPath():獲取相對路徑
public String getName():獲取名稱
public long length():獲取長度。位元組數
public long lastModified():獲取最後一次的修改時間,毫秒值

高階獲取功能
public String[] list()將目錄下的子目錄及檔案的名字,返回到String陣列中
public File[] listFiles()將目錄下的子目錄及檔案的例項返回到File陣列中
具體程式碼:

package com.etc.day15.file;

import java.io.File;

public class FileDemo_1 {

	public static void main(String[] args) {
		
		//高階獲取功能將目錄下的子目錄及檔案的名字,返回到String陣列中
		File file = new File("e:/job");
		
		String [] filelist = file.list();
		for(String files:filelist){
			System.out.println(files);
		}
		
		System.out.println("---------------");
		
		File[] file1 =file.listFiles();
		for(File files1:file1){
			System.out.println(files1.getName());
			
		}
		
	}
	
}

package com.etc.day15.file;

import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileDemo {
	public static void main(String[] args) {
		
		File file = new File("fileDemo");
		long time = file.lastModified();//返回最後修改的毫秒數
		Date date = new Date(time);
		DateFormat dateformat = new SimpleDateFormat("YYYY-MM-dd kk:mm:ss");
		String str = dateformat.format(date);
		System.out.println("最後修改日期:"+str);
		System.out.println("檔名稱:"+file.getName());
		System.out.println("檔案絕對路徑:"+file.getAbsoluteFile());
		System.out.println("檔案相對路徑:"+file.getPath());
		System.out.println("是否是檔案:"+file.isFile());
		System.out.println("是否為 目錄:"+file.isDirectory());
		
		File file1 = new File("e:/b/a/c");
		System.out.println("是否存在目錄"+file1.exists());//目錄是否存在,如果存在返回true
		System.out.println("是否建立目錄"+file1.mkdir());//建立資料夾。如果存在這樣的資料夾就不建立了,已經存在返回false
		System.out.println("是否建立目錄"+file1.mkdirs());//建立資料夾,如果父資料夾不存在會幫你創建出來,已經存在返回false
		
		//System.out.println("刪除檔案:"+file.delete());
		
	}

}

檔案過濾:

檔名過濾器介面:interface FilenameFilter
常用於過濾不符合規格的檔名
需重寫accept方法自定義過濾規則,如下:

boolean  accept(File dir, String name)
--  dir:表示檔案的當前目錄。
--  name:表示當前目錄的子目錄或者檔案的名字。
File類中提供了使用檔名過濾器遍歷目錄的方法:

String[]  list(FilenameFilter filter)
--  把滿足指定過濾條件的檔案和目錄,返回到String陣列中。
File[]  listFiles(FilenameFilter filter)
--  把滿足指定過濾條件的檔案和目錄,返回到File陣列中。

package com.etc.day15.file;

import java.io.File;
import java.io.FilenameFilter;

public class FileFilter {
	public static void main(String[] args) {
		
		File file = new File("e:/驅動");
		
		File [] filelist = file.listFiles(new FilenameFilter(){

			@Override
			public boolean accept(File dir, String name) {
				
				if(name.endsWith(".zip")){
					return true;
					
				}
				
				return false;
			}});
		//遍歷
		for(File f:filelist){
			System.out.println(f.getName());
		}
		
		
		
		
		
		
		
		
		
	}

}