已成常態,推特 Twitter 和 Meta 又被俄羅斯罰款上千萬盧布
基礎概念
File類:
以抽象的方式代表檔名和目錄路徑名。
作用:
操作檔案的屬性:進行建立或刪除檔案等常用操作。
(不能操作檔案內容,對於檔案內容需要IO流)
注意:
- File類是在java.io包中唯一與檔案本身有關的
- 創建出File類的物件並不代表該路徑下有此檔案或目錄。
- File類的物件可以是目錄或者檔案。
基本操作
構造方法
通過將給定路徑名字串轉換成抽象路徑名來建立一個新 File 例項。(最常用)
File(String pathname)
通過給定的父抽象路徑名和子路徑名字串建立一個新的File例項。
File(File parent, String child);
根據 parent 路徑名字串和 child 路徑名字串建立一個新 File 例項。
File(String parent, String child)
通過將給定的 file: URI 轉換成一個抽象路徑名來建立一個新的 File 例項。
File(URI uri)
常用方法
判斷
public boolean exists()
判斷檔案是否存在。
如果檔案存在
如果是目錄,public boolean isDirectory()
返回true;
如果是檔案(非目錄則是檔案),public boolean isFile()
返回true;
建立刪除
注意:不論是建立檔案、建立目錄還是刪除檔案,只有在動作真正發生的時候會返回true。
建立檔案
boolean createNewFile()
當且僅當不存在具有此抽象路徑名指定名稱的檔案時建立一個新的空檔案;
建立資料夾
boolean mkdir()
建立此抽象路徑名指定的目錄。(只能建立一個資料夾,要求所有的父目錄都存在,否則建立失敗。)
boolean mkdirs()
建立此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。(注意即便最後建立失敗,但是也可能建立了一些中間目錄)。
上面兩個方法如果要建立的目錄已經存在,不再重新建立,會返回false,只有新建目錄返回true。
刪除
boolean delete()
刪除此抽象路徑名錶示的檔案或目錄。(非空目錄則無法刪除,返回false。)
如果要刪除的檔案不能被刪除則會丟擲IOException。
注意
如果檔案不存在,上面兩個方法都返回false,即不存在的File類物件既不是檔案也不是目錄。
File類高階應用—列出檔案及目錄
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream.GetField;
import java.io.PrintStream;
import java.util.*;
public class Main {
public static void main(String args[]) throws IOException, InterruptedException {
File file=new File("E:\\eclipse-workspace\\my\\data1");//絕對路徑“/”=="\\"
System.out.println(file.exists());//檔案是否存在
if(file.exists()) {
file.delete();//只能刪除空資料夾/檔案。
}
else {
file.mkdir();//建立
}
file =new File("src/Main.java");//相對路徑 “/”=="\\"
System.out.println(file.exists());
System.out.println(file.getAbsolutePath());//從相對路徑找到絕對路徑(不需要檔案存在)
System.out.println(file.getTotalSpace());//如果是真的,則輸出檔案所在磁碟的容量大小
System.out.println(file.getFreeSpace());//如果是真的,則輸出檔案所在磁碟的可用容量的大小
System.out.println(file.getParent());//返回檔案的上一級檔名
System.out.println(file.getName());//返回檔名
System.out.println(file.getPath());//返回相對路徑
System.out.println(file.lastModified());//返回此抽象路徑名錶示的檔案最後一次被修改的時間。
System.out.println(file.length());//返回檔案大小(位元組數)
file=new File("abc.txt");
System.out.println(file.exists());
file.createNewFile();//建立新檔案.txt
System.out.println(file.exists());
// file.deleteOnExit();//虛擬機器執行結束/程式結束時候再刪除檔案;
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream.GetField;
import java.io.PrintStream;
import java.nio.file.DirectoryStream.Filter;
import java.util.*;
import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;
public class Main {
public static void main(String args[]) throws IOException, InterruptedException {
File file=new File("E:\\eclipse-workspace");
//list
String[] files=file.list();//返回目錄中的檔案和目錄。
for(String filename:files) {
System.out.println(filename);
}
String[] files1= file.list(new FilenameFilter() {//匿名內部類
public boolean accept(File dir, String name) {
// System.out.println(dir);//父路徑
// System.out.println(name);//檔名稱
if(name.endsWith(".txt")) return true;
else
return false;//返回false的不能被輸出
}
});
for(String afile:files1) {
System.out.println(afile);
}
}
}