File類(File類的概述和構(gòu)造方法)
- A:File類的概述
-
File更應(yīng)該叫做一個(gè)路徑
- 文件路徑或者文件夾路徑
- 路徑分為絕對(duì)路徑和相對(duì)路徑
- 絕對(duì)路徑是一個(gè)固定的路徑,從盤符開(kāi)始
- 相對(duì)路徑相對(duì)于某個(gè)位置,在eclipse下是指當(dāng)前項(xiàng)目下,在dos下
查看API指的是當(dāng)前路徑
用File類的構(gòu)造方法,將桌面路徑封裝成File對(duì)象需要注意什么垢村?文件和目錄路徑名的抽象表示形式 S炊!!注意路徑 是\表示欢摄,eg: E:\ 因?yàn)榕c轉(zhuǎn)義字符區(qū)分
-
- B:構(gòu)造方法
- File(String pathname):根據(jù)一個(gè)路徑得到File對(duì)象
- File(String parent, String child):根據(jù)一個(gè)目錄和一個(gè)子文件/目錄得到File對(duì)象
- File(File parent, String child):根據(jù)一個(gè)父File對(duì)象和一個(gè)子文件/目錄得到File對(duì)象
- C:案例演示
-
File類的構(gòu)造方法
案例:
package com.heima.file;
import java.io.File;
public class Demo1_File {
public static void main(String[] args) {
//demo1();
//demo2();
demo3();
}
private static void demo3() {
注意“”里面使用\會(huì)轉(zhuǎn)義廊移,所以應(yīng)該?舵鳞,但是文件輸入流里面如果用/會(huì)怎樣震檩?@@File parent = new File("F:\雙元課堂\day19\video");
@@ //文件的輸入流
InputStream in = new FileInputStream("src/db.properties");
String child = "001_今日內(nèi)容.avi";
//封裝成file對(duì)象的好處,可以使用file對(duì)象的更多方法
File file = new File(parent, child);
System.out.println(file.exists());
System.out.println(parent.exists());
}
public static void demo2() {
String parent = "F:\雙元課堂\day19\video";
String child = "001_今日內(nèi)容.avi";
File file = new File(parent,child); !r讯椤抛虏!File類父子構(gòu)造方法存在,因?yàn)榭梢宰宑hild 成了變量套才,可以不停賦值改變迂猴,這樣就能建立不同的File,訪問(wèn)或建立每個(gè)父類s下的文件背伴。
System.out.println(file.exists());
}
public static void demo1() {
//File file = new File("XXX.txt");//XXX.txt代表相對(duì)路徑,相對(duì)于當(dāng)前項(xiàng)目所在的位置
//File file = new File("F:/雙元課堂/day19/video/001_今日內(nèi)容.avi");File file = new File("F:\雙元課堂\day19\video\001_今日內(nèi)容.avi");
System.out.println(file.exists());
//需要在所在項(xiàng)目下建立xxx.txt文件
File file2 = new File("xxx.txt");
System.out.println(file2.exists());File file3 = new File("yyy.txt");
System.out.println(file3.exists());
}
}
-
19.15_File類(File類的創(chuàng)建功能)
- A:創(chuàng)建功能
- public boolean createNewFile():創(chuàng)建文件 如果存在這樣的文件沸毁,就不創(chuàng)建了
- public boolean mkdir():創(chuàng)建文件夾 如果存在這樣的文件夾峰髓,就不創(chuàng)建了
- public boolean mkdirs():創(chuàng)建文件夾,如果父文件夾不存在,會(huì)幫你創(chuàng)建出來(lái)
- B:案例演示
File類的創(chuàng)建功能
-
注意事項(xiàng):
- 如果你創(chuàng)建文件或者文件夾忘了寫盤符路徑息尺,那么携兵,默認(rèn)在項(xiàng)目路徑下。 BвP旖簟!關(guān)鍵是不寫盤符路徑
案例:
package com.heima.file;
import java.io.File;
import java.io.IOException;
public class Demo2_FileMethod {
public static void main(String[] args) throws IOException {
//demo1();
demo2();
}
private static void demo2() {
File dir1 = new File("aaa");
System.out.println(dir1.mkdir());
File dir2 = new File("bbb.txt"); //這樣寫是可以的,文件夾也是可以有后綴的
System.out.println(dir2.mkdir());
File dir3 = new File("ccc\\ddd");
System.out.println(dir3.mkdirs()); //創(chuàng)建多級(jí)目錄
}
public static void demo1() throws IOException {
File file = new File("yyy.txt");
System.out.println(file.createNewFile()); //如果沒(méi)有就創(chuàng)建,返回true
File file2 = new File("zzz");
System.out.println(file2.createNewFile());
}
}
19.16_File類(File類的重命名和刪除功能)
- A:重命名和刪除功能
- public boolean renameTo(File dest):把文件重命名為指定的文件路徑
- public boolean delete():刪除文件或者文件夾 L堪谩2⒓丁!刪除文件夾必須里面沒(méi)有任何文件夾和文件
- B:重命名注意事項(xiàng)
- 如果路徑名相同侮腹,就是改名嘲碧。
- 如果路徑名不同,就是改名并剪切父阻。
- C:刪除注意事項(xiàng):
Java中的刪除不走回收站呀潭。
-
要?jiǎng)h除一個(gè)文件夾,請(qǐng)注意該文件夾內(nèi)不能包含文件或者文件夾
案例:
package com.heima.file;
import java.io.File;
public class Demo3_FileMethod {
public static void main(String[] args) {
//demo1();
File file1 = new File("yyy.txt");
System.out.println(file1.delete());File file2 = new File("aaa");
System.out.println(file2.delete());File file3 = new File("ccc"); //如果刪除一個(gè)文件夾,那么文件夾必須是空的
System.out.println(file3.delete());
}
public static void demo1() {
File file1 = new File("ooo.txt");
File file2 = new File("D:\xxx.txt");
System.out.println(file1.renameTo(file2));
}
}
19.17_File類(File類的判斷功能)
-
A:判斷功能
- public boolean isDirectory():判斷是否是目錄
- public boolean isFile():判斷是否是文件
- public boolean exists():判斷是否存在
- public boolean canRead():判斷是否可讀
- public boolean canWrite():判斷是否可寫
- public boolean isHidden():判斷是否隱藏
-
B:案例演示
- File類的判斷功能
案例:
package com.heima.file;
import java.io.File;
public class Demo4_FileMethod {
public static void main(String[] args) {
//demo1();
demo2();
}
public static void demo2() {
File file = new File("zzz");
file.setReadable(false);
System.out.println(file.canRead()); //windows系統(tǒng)認(rèn)為所有的文件都是可讀的
file.setWritable(true);
System.out.println(file.canWrite()); //windows系統(tǒng)可以設(shè)置為不可寫
//現(xiàn)在項(xiàng)目路徑下建立aaa.txt,并設(shè)置為隱藏
File file2 = new File("aaa.txt");
System.out.println(file2.isHidden()); //判斷是否是隱藏文件
System.out.println(file.isHidden());
}
public static void demo1() {
File dir1 = new File("ccc");
System.out.println(dir1.isDirectory()); //判斷是否是文件夾File dir2 = new File("zzz"); System.out.println(dir2.isDirectory()); System.out.println(dir1.isFile()); //判斷是否是文件 System.out.println(dir2.isFile());
}
} - File類的判斷功能
19.18_File類(File類的獲取功能)
- A:獲取功能
-
public String getAbsolutePath():獲取絕對(duì)路徑
getAbsolutPath()與getPath()使用注意點(diǎn)V练恰D剖稹! 在一道題中荒椭,我看到老師直接System.out.println(new File()),奇詭哎谐鼎,后來(lái)發(fā)現(xiàn)它重現(xiàn)了toString方法,又發(fā)現(xiàn)toString方法ruturn getPath()但是當(dāng)時(shí)我做題時(shí)得到的卻是絕對(duì)路徑趣惠,后面才知道原來(lái)getPath()是你傳相對(duì)路徑就打印相對(duì)狸棍,傳絕對(duì)就打印絕對(duì),而getAbsolutePath()是無(wú)論怎樣返回絕對(duì)路徑味悄,注意File對(duì)象可以用getFile()得到他的文件名草戈,不是路徑值。 那道題是那一道侍瑟?對(duì)唐片,就是21.17遍歷一個(gè)路徑下所有指定后綴文件名的文件,要輸出文件路徑時(shí)產(chǎn)生的疑惑涨颜。 * public String getPath():獲取路徑 7丫隆!庭瑰!獲取構(gòu)造方法傳入的路徑
public String getName():獲取名稱 P浅帧!弹灭!注意要和toString方法區(qū)分
file類獲取長(zhǎng)度單位是督暂?public long length():獲取長(zhǎng)度揪垄。字節(jié)數(shù)
public long lastModified():獲取最后一次的修改時(shí)間,毫秒值
public String[] list():獲取指定目錄下的所有文件或者文件夾的名稱數(shù)組
public File[] listFiles():獲取指定目錄下的所有文件或者文件夾的File數(shù)組 B呶獭<⑴!listFiles() 只是能得到那一層的文件對(duì)象而已卢未,并不是我想的可以深入多層查找肪凛。
-
- B:案例演示
-
File類的獲取功能
案例:
package com.heima.file;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo5_FileMethod {
public static void main(String[] args) {
//demo1();
demo2();
}
public static void demo2() {
File dir = new File("F:/雙元課堂/day19/video");
String[] arr = dir.list(); //僅為了獲取文件名for (String string : arr) {
System.out.println(string);
}File[] subFiles = dir.listFiles();
for (File file : subFiles) { //獲取文件對(duì)象
System.out.println(file);
}
}
public static void demo1() {
File file1 = new File("ccc.txt");
File file2 = new File("D:\雙元課堂\day19\ccc.txt");
//System.out.println(file1.getAbsolutePath()); //獲取絕對(duì)路徑
//System.out.println(file2.getAbsolutePath());//System.out.println(file1.getPath()); //獲取構(gòu)造方法中傳入路徑
//System.out.println(file2.getPath());
-
// System.out.println(file1.getName()); //獲取文件或者文件的名字
// System.out.println(file2.getName());
//
// System.out.println(file1.length());
Date d = new Date(file1.lastModified()); //文件的最后修改時(shí)間
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println(sdf.format(d));
}
}
19.19_File類(輸出指定目錄下指定后綴的文件名)
- A:案例演示
- 需求:判斷E盤目錄下是否有后綴名為.jpg的文件堰汉,如果有辽社,就輸出該文件名稱
案例:
package com.heima.test;
import java.io.File;
import java.io.FilenameFilter;
public class Test3 {
public static void main(String[] args) {
File dir = new File("E:\");
- 需求:判斷E盤目錄下是否有后綴名為.jpg的文件堰汉,如果有辽社,就輸出該文件名稱
// String[] arr = dir.list(); //獲取e盤下所有的文件或文件夾
// for (String string : arr) {
// if(string.endsWith(".jpg")) {
// System.out.println(string);
// }
// }
File[] subFiles = dir.listFiles(); //獲取e盤下所有的文件或文件夾對(duì)象
for (File subFile : subFiles) {
if(subFile.isFile() && subFile.getName().endsWith(".jpg")) {
System.out.println(subFile);
}
}
}
}
19.20_File類(文件名稱過(guò)濾器的概述及使用)
-
A:文件名稱過(guò)濾器的概述
- public String[] list(FilenameFilter filter)
- public File[] listFiles(FileFilter filter)
-
B:文件名稱過(guò)濾器的使用
- 需求:判斷E盤目錄下是否有后綴名為.jpg的文件,如果有翘鸭,就輸出該文件名稱
-
C:源碼分析
-
帶文件名稱過(guò)濾器的list()方法的源碼
案例:
package com.heima.test;
import java.io.File;
import java.io.FilenameFilter;
public class Test3 {
public static void main(String[] args) {
File dir = new File("E:\");String[] arr = dir.list(new FilenameFilter() {
@Override public boolean accept(File dir, String name) { //System.out.println(dir); //System.out.println(name); File file = new File(dir, name); return file.isFile() && file.getName().endsWith(".jpg"); }
});
for (String string : arr) {
System.out.println(string);
}
}
}
-