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、相對路徑:從當前路徑開始的路徑。
./ 代表同級目錄
../ 代表一級上級目錄(間隔一個目錄)