File類及其常用方法

File類:File類代表一個特定的文件或者目錄,並提供了若干方法對該文件或目錄進行操作。

boolean isDirectory():判斷此File對象代表的路徑表示是不是目錄,只有File對象代表路徑存在且是一個目錄時才返回true,否則返回false。

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:\\Program Files");
	System.out.println(file.isDirectory());//返回true
    }
}

由於C:\Program Files目錄存在,所以返回true

boolean isFile():判斷此File對象代表的路徑是否是一個標準文件,只有File對代表路徑存在且是一個標準文件時才返回true,否則返回false。

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:\\Windows\\System32\\cmd.exe");
	System.out.println(file.isFile());//返回true
    }
}

由於C:\Windows\System32\cmd.exe路徑存在並且是一個標準文件,所以返回true。

文件存儲在哪裏?機械硬盤,固態盤,光盤,U盤

File類構造方法(如何創建對象):

方法:1、File(String pathname):通過路徑名創建一個新 File 實例

2、File(File parent, String child):根據父目錄路徑File實例和子目錄或文件路徑創建一個新 File 實例

3、File(String parent, String child) :根據父目錄路徑和子目錄或文件路徑創建一個新 File 實例

4、(瞭解)File(URI uri):通過統一資源標識符創建一個新的 File 實例

 

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:\\Windows\\System32");//方法一
	String path = file.getAbsolutePath();
	System.out.println(path);
		
	file = new File(new File("C:\\Windows"), "System32");//方法二
	path = file.getAbsolutePath();
	System.out.println(path);
		
	file = new File("C:\\Windows", "System32");//方法三
	path = file.getAbsolutePath();
	System.out.println(path);
	}
}
import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:\\Windows\\System32\\cmd.exe");//方法一
	String path = file.getAbsolutePath();
	System.out.println(path);
		
	file = new File(new File("C:\\Windows\\System32"), "cmd.exe");//方法二
	path = file.getAbsolutePath();
	System.out.println(path);
	
	file = new File("C:\\Windows\\System32", "cmd.exe");//方法三
	path = file.getAbsolutePath();
	System.out.println(path);
	}
}

File類常用方法:

1、String getName():返回此對象表示的文件或目錄最後一級文件夾名稱

返回文件名稱cmd.exe

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:\\Windows\\System32\\cmd.exe");
	String name = file.getName();//返回文件名cmd.exe
	System.out.println(name);
    }
}

返回最後一級目錄名稱 

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:\\Windows\\System32");
	String name = file.getName();//返回目錄最後一級文件夾名稱System32
	System.out.println(name);
    }
}

2、String getParent():返回此File對象的父目錄路徑名;如果此路徑名沒有指定父目錄,則返回 null

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:\\Windows\\Web\\Wallpaper");
	System.out.println(file.getParent());//輸出C:\Windows\Web
    }
}

System.out.println(file.getParent());//等效於System.out.println(file.getName().getPath);

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:\\Windows\\Web\\Wallpaper");
	file = file.getParentFile();
	System.out.println(file.getName());//輸出Web
    }
}

3、file.getParentFile(與上面方法輸出一致,均爲返回以上一級):System.out.println(file.getParentFile());//等效於new File(file.getParent());

4、String getPath() :返回File對象所表示的字符串路徑。

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:\\Windows\\Web\\Wallpaper");
	file = file.getParentFile();
	System.out.println(file.getPath());//輸出C:\Windows\Web
    }
}

5、boolean renameTo(File dest):重新命名此File對象表示的文件,重命名成功返回true,否則返回false。

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File oldFile = new File("D:\\images\\image.jpg");
	File newFile = new File("D:\\images\\Windows.jpg");
	boolean result = oldFile.renameTo(newFile);//將D盤images文件夾中圖片更名爲Windows.jpg
	if (result) {
		System.out.println("重命名成功");
	} else {
		System.out.println("重命名失敗");
	}
    }
}

該方法需要創建一個新的File實例:

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file=new File("D:\\images\\image.jpg");//舊名稱
	if(file.renameTo(new File("D:\\images\\Windows.jpg"))) {//想改成的名稱
		System.out.println("yes");
	}
    }
}

6、boolean mkdir():創建此File類對象指定的目錄,不包含父目錄。創建成功回true,否則返回false;(只能創建文件夾類型)

1、由於Program_Files文件夾沒有被創建,所以無法創建“C:\Program_Files\Java”目錄,欲採用這種方法創建該目錄必須先手動創建Program_Files文件夾。

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:\\Program_Files\\Java");
	if (file.mkdir()) {
		System.out.println("創建成功");
	}else {
		System.out.println("創建失敗");
	}
    }
}

2、欲採用這種方法創建“C:\Program_Files\Java”目錄,儘管Program_Files文件夾沒有被創建,但依然可以成功。

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:\\Program_Files\\Java");
	if (file.mkdirs()) {
		System.out.println("創建成功");
	}else {
		System.out.println("創建失敗");
	}
    }
}

7、boolean createNewFile():如果指定的文件不存在併成功地創建,則返回 true;如果指定的文件已經存在,則返回 false;如果所創建文件所在目錄不存在則創建失敗並出現IOException異常。

注意:mkdir()和mkdirs()只能創建目錄,不能創建文件;而createNewFile()只能創建文件,不能創建目錄;

import java.io.File;

public class Test {

    public static void main(String[] args) {
    File file = new File("C:\\Program_Files\\Java");
        try {
        if(new File("C:\\a.dox").createNewFile()) {//創建新的不同類型文件,後綴不同打開方式不同
	System.out.println("yes");
				
        }
        } catch (IOException e) {
	    e.printStackTrace();
	}
    }
}

8、boolean exists():判斷文件或目錄是否存在

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:\\Windows\\System32\\cmd.exe");
	if (file.exists()) {//判斷cmd.exe文件是否存在
		System.out.println("文件存在");
	}
    }
}
import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:\\Windows\\System32");
	if (file.exists()) {//判斷目錄是否存在
		System.out.println("目錄存在");
	}
    }
}

9、boolean delete():刪除File類對象表示的目錄或文件。如果該對象表示一個目錄,則該目錄必須爲空才能刪除;文件或目錄刪除成功返回true,否則false。
 

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("D:\\images");
	if (file.delete()) {// 由於D:\images目錄非空,所以刪除失敗
	    System.out.println("目錄刪除成功");
	} else {
		System.out.println("目錄刪除失敗");
	}
    }
}
import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("D:\\images\\image.jpg");
	if (file.delete()) {//刪除圖片文件
		System.out.println("圖片刪除成功");
	} else {
		System.out.println("圖片刪除失敗");
	}
    }
}

10、String[] list():返回由File對象對應目錄所包含文件名或文件夾名組成的字符串數組。
 

import java.io.File;

public class Test {

    public static void main(String[] args) {
	String[] names = new File("C:\\Program Files").list();
	for (String name : names) {
		System.out.println(name);
	}
    }
}

11、File[] listFiles():返回由當前File對象對應目錄所包含文件路徑或文件夾路徑組成的File類型的數組。

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File[] files = new File("C:\\Program Files").listFiles();
	for (File file : files) {
		String fileName = file.getName();
		System.out.println(fileName);
	}
    }
}

12、static separator:指定文件或目錄路徑時使用斜線或反斜線來寫,但是考慮到跨平臺,斜線反斜線最好使用File類的separator屬性來表示,自動轉換生成斜槓,因爲Windows與Linux斜槓方向不同:

import java.io.File;

public class Test {

    public static void main(String[] args) {
	File file = new File("C:"+File.separator+"Windows"+File.separator+"System32");
	System.out.println(file.getPath());//輸出C:\Windows\System32
    }
}

絕對路徑與相對路徑:

1、絕對路徑:從盤符開始的路徑。

2、相對路徑:從當前路徑開始的路徑。

./ 代表同級目錄

../ 代表一級上級目錄(間隔一個目錄)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章