Java_File類
File類以抽象的方式代表文件名和目錄路徑。該類主要用于文件和目錄的創(chuàng)建、查找、刪除等。先來(lái)看一下File的構(gòu)造方法:
// 通過(guò)將給定的路徑名字符串轉(zhuǎn)換為抽象路徑名來(lái)創(chuàng)建新的 File實(shí)例
File f = new File("E:\\Java");
// 從父路徑名字符串和子路徑名字符串創(chuàng)建新的 File實(shí)例
File f1 = new File("E:\\","PersonalWork");
File f1_1 = new File((String) null,"PersonalWork");
// 從父抽象路徑名和子路徑名字符串創(chuàng)建新的 File實(shí)例。
File f2 = new File(new File("."),"MyTest");
File f2_1 = new File((File)null,"MyTest");
// 通過(guò)將給定的 file: URI轉(zhuǎn)換為抽象路徑名來(lái)創(chuàng)建新的 File實(shí)例
File f3 = null;
try {
f3 = new File(new URI("file:///E:/WorkProjects/test.html"));
} catch (URISyntaxException e) {
e.printStackTrace();
}
// 實(shí)質(zhì)上:當(dāng)f1_1, f2_1的第一個(gè)參數(shù)都為 null, 與 f 的實(shí)現(xiàn)方式是一致,
// 都是通過(guò) WinNTFilesSystem中的 normalize 方法檢查給定的路徑名字符串是否正常。
// 返回此抽象路徑名的路徑名字符串
System.out.println(f); // E:\Java
System.out.println(f1); //E:\PersonalWork
System.out.println(f1_1); // PersonalWork
System.out.println(f2); //.\MyTest
System.out.println(f2_1); // MyTest
System.out.println(f3); //E:\WorkProjects\test.html
// File類的靜態(tài)變量
System.out.println("---"+File.separator); // \ 與系統(tǒng)有關(guān)的默認(rèn)名稱分隔符
System.out.println("---"+File.pathSeparator);// ; 與系統(tǒng)相關(guān)的路徑分隔符字符
- 訪問(wèn)文件和目錄
1訪問(wèn)文件名相關(guān)的方法
File file = new File("E:\\WorkProjects\\test.html");
File file2 = new File("test.html");
System.out.println(file.getName()); // test.html 返回文件名或路徑名(如果是路徑,返回最后一級(jí)子路徑)
System.out.println(file.getParent()); // E:\WorkProjects 返回對(duì)應(yīng)目錄(最后一級(jí)子目錄)的父目錄名
System.out.println(file.getParentFile()); // 返回父目錄的抽象路徑名
System.out.println(file2.getPath()); // test.html 返回對(duì)應(yīng)的路徑(相對(duì))
System.out.println(file2.getAbsolutePath());// E:\WorkProjects\test.html 返回對(duì)應(yīng)的絕對(duì)路徑
System.out.println(file2.getAbsoluteFile());// 返回抽象的絕對(duì)路徑
System.out.println(file.renameTo(new File("E:\\WorkProjects\\test1.html")));// 重命名文件 成功返回true,否則false
try {
System.out.println(file.getCanonicalFile());// 返回此抽象路徑名的規(guī)范形式。
System.out.println(file.getCanonicalPath());// 返回此抽象路徑名的規(guī)范路徑名字符串。
} catch (IOException e) {
e.printStackTrace();
}
2.文件檢測(cè)相關(guān)方法
File file = new File("E:\\WorkProjects\\test1.html");
System.out.println(file.exists()); //true 判斷文件或者目錄是否存在
System.out.println(file.isFile()); //true 判斷是否是文件
System.out.println(file.isDirectory()); //false 判斷是否是目錄
System.out.println(file.isHidden()); //false 判斷是否是隱藏文件
System.out.println(file.isAbsolute()); //true 判斷是否是絕對(duì)路徑
System.out.println(file.canExecute()); //true 判斷是否可執(zhí)行
System.out.println(file.canRead()); //true 判斷是否可讀
System.out.println(file.canWrite()); //true 判斷是否可寫(xiě)
3文件操作相關(guān)方法
File file = new File("E:\\WorkProjects\\test.txt");
File file2 = new File("E:\\zzz\\www\\");
try {
System.out.println(file.createNewFile()); // 創(chuàng)建文件,若文件不存在且創(chuàng)建成功,返回true。創(chuàng)建失敗(或存在)返回false
// 在 E:\zzz 目錄下創(chuàng)建一個(gè)文件名為 test0001...bb 的臨時(shí)文件
File temp =File.createTempFile("test0001","bb",new File("E:\\zzz"));
if(temp.exists()) { System.out.println("create temp success");}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(file.delete()); //刪除文件或目錄,若刪除文件成功返回true否則 false;只能刪除空目錄,成功true否則 false
// 注冊(cè)一個(gè)刪除的鉤子,指定當(dāng)java虛擬機(jī)退出時(shí),刪除對(duì)應(yīng)的文件或目錄
// 若對(duì)應(yīng)的目錄為空目錄則刪除該空目錄,否則不刪除該目錄
// 若對(duì)應(yīng)的為文件則刪除文件。
file2.deleteOnExit();
System.out.println("----");
4目錄操作相關(guān)方法
File file = new File("E:\\WorkProjects\\");
File file2 = new File("E:\\zzz\\www\\aa\\bb");
System.out.println(file2.mkdir()); // 創(chuàng)建目錄,成功返回true否則false; 若父目錄不存在則創(chuàng)建失敗
System.out.println(file2.mkdirs()); // 遞歸創(chuàng)建,不需要考慮父目錄是否存在。若路徑存在則創(chuàng)建失敗 false
String [] list = file.list(); // 列出該目錄下的所有文件名及子目錄名
System.out.println(Arrays.toString(list)); //例如: test.txt
File[] files = file.listFiles(); // 列出該目錄下的所有文件路徑名及子目錄路徑名
System.out.println(Arrays.toString(files)); //例如: E:\WorkProjects\test.txt
File[] root = File.listRoots(); // 列出系統(tǒng)所有根路徑
System.out.println(Arrays.toString(root)); //例如: window上 [C:\, D:\, E:\, F:\]
5文件相關(guān)信息
File file = new File("E:\\WorkProjects\\test1.html");
System.out.println(new Date(file.lastModified())); //Sun Aug 01 17:10:10 CST 2018 返回文件最后修改的時(shí)間
System.out.println(file.length()); //1661 返回文件內(nèi)容的長(zhǎng)度
6.設(shè)置文件相關(guān)屬性
File file = new File("E:\\WorkProjects");
System.out.println(file.setExecutable(true)); // 設(shè)置文件或目錄可執(zhí)行
System.out.println(file.setReadable(true)); // 設(shè)置文件或目錄可讀
System.out.println(file.setWritable(true)); // 設(shè)置文件或目錄可寫(xiě)
System.out.println(file.setReadOnly()); // 設(shè)置文件或目錄只允許讀取操作
System.out.println(file.setLastModified(System.currentTimeMillis())); // 設(shè)置文件或目錄最后修改時(shí)間
- 文件過(guò)濾器
File類中的list()方法中可接受一個(gè)FileNameFilter參數(shù),通過(guò)該參數(shù)可以只列出符合條件的文件。listFiles()方法中可以接受FileNameFilter或者FileFilter參數(shù)。
File file = new File("E:\\WorkProjects");
File file1 = new File(".");
// 列出該目錄下不包含隱藏文件或目錄的所有文件及子目錄
// java 1.8 Lambda表達(dá)式寫(xiě)法
//File[] files = file.listFiles(pathname -> !pathname.isHidden());
File[] files = file.listFiles(pathname -> {
if(!pathname.isHidden()) {
return true;
}
System.out.println(pathname+" it's a hidden file or folder");
return false;
});
/*File[] files = file.listFiles(new FileFilter() { //java.io.FileFilter 過(guò)濾器
@Override
public boolean accept(File pathname) {
if(!pathname.isHidden()) {
//System.out.println( "accept--"+ "It isn't a hidden file or folder");
return true;
}
System.out.println(pathname+" it's a hidden file");
return false;
}
});*/
System.out.println(Arrays.toString(files));
--------------------------------分割線---------------------------------
//列出該目錄下文件名以 .java結(jié)尾,或者文件對(duì)應(yīng)一個(gè)路徑
//String [] nameList = file1.list((dir, name) -> (name.endsWith(".java")|| new File(name).isDirectory());
String [] nameList = file1.list((dir, name) -> {
if(name.endsWith(".java")|| new File(name).isDirectory()){
return true;
}
System.out.println("dir:"+dir+ " , name"+name );
return false;
});
/* String [] nameList = file1.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".java")|| new File(name).isDirectory()){
return true;
}
System.out.println("dir:"+dir+ " , name"+name );
return false;
}
});*/
System.out.println(Arrays.toString(nameList));

浙公網(wǎng)安備 33010602011771號(hào)