java基礎之File類
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());
}
}
}