Java文件中的File類
File類
java.il.File類,文件和目錄路徑名的抽象表示形式。
Java把電腦中的文件和文件夾(目錄)封裝爲一個File類,我們可以使用File類對文件和文件夾進行操作。
File類是一個與系統操作無關的類,任何操作系統都可以使用這個類中的方法。
file:文件 — directory : 文件夾/目錄 — path:路徑
File類的構造方法:
File(String parent, String child)
根據 parent 路徑名字符串和 child 路徑名字符串創建一個新 File 實例。
參數:把路徑分爲兩部分
String parent:父路徑
String child : 子路徑
好處:
父路徑和子路徑,可以單獨書寫,使用起來非常靈活。
File(File parent, String child)
File類的常用方法
public static void main(String[] args) {
File file = new File("src.txt");
System.out.println("文件名稱"+file.getName());
System.out.println("文件的相對路徑"+file.getPath());
System.out.println("文件的絕對路徑"+file.getAbsolutePath());
System.out.println("文件的父路徑"+file.getParent());
System.out.println(file.canRead()?"文件可讀":"文件不可讀");
System.out.println(file.canWrite()?"文件可寫":"文件不可寫");
System.out.println("最後修改的時間"+file.lastModified());
System.out.println("文件的大小"+file.length()+"bytes");
// System.out.println("是否成功刪除文件"+file.delete());
}
遍歷目錄下的文件
public static void main(String[] args) {
File file = new File("c:\\IdeaProjects");
if(file.isDirectory()){
String[] names = file.list();
for(String name:names){
System.out.println(name);
}
}
}
過濾目錄中只含.java後綴名的文件
public static void main(String[] args) {
File file = new File("C:\\IdeaProjects\\untitled1\\src\\Demo06\\src");
//創建過濾器對象
FilenameFilter filter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File currFile = new File(dir,name);
if(currFile.isFile()&&name.endsWith(".java")){
return true;
}else
return false;
}
};
if(file.exists()){
String[] lists = file.list(filter);
for(String name : lists){
System.out.println(name);
}
}
}
過濾目錄文件下(子目錄)所有文件
public static void main(String[] args) {
File file = new File("c:\\IdeaProjects");
fileDir(file);
}
public static void fileDir(File dir){
File[] files = dir.listFiles();//獲得表示目錄的所有文件
for(File file:files){ //遍歷所有的子目錄和文件
if (file.isDirectory()){
fileDir(file); //如果是目錄,遞歸調用fileDir()
}
System.out.println(file.getAbsolutePath());//輸出文件的絕對路徑
}
}
刪除文件及目錄
public static void main(String[] args) {
File file = new File("C:\\新建文件夾");//創建一個代表目錄的file對象
deleteDir(file); //調用deleteDir刪除方法
}
public static void deleteDir(File dir){
if(dir.exists()){ //判斷傳入的File對象是否存在
File[] files = dir.listFiles(); //獲得file數組
for (File file:files){ //遍歷所有的子目錄和文件
if (file.isDirectory()){
deleteDir(file); //如果是目錄,遞歸調用deleteDir()
}else {
//如果是文件,直接刪除
file.delete();
}
}
//刪除完這個目錄裏的所有文件後,就刪除這個目錄
dir.delete();
}
}