File類學(xué)習(xí)

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());
    

    }
    }

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:\");

// 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);
      }
      }
      }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末滴铅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子就乓,更是在濱河造成了極大的恐慌汉匙,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件生蚁,死亡現(xiàn)場(chǎng)離奇詭異噩翠,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)邦投,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門伤锚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人志衣,你說(shuō)我怎么就攤上這事屯援。” “怎么了念脯?”我有些...
    開(kāi)封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵狞洋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我绿店,道長(zhǎng)吉懊,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任假勿,我火速辦了婚禮惕它,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘废登。我一直安慰自己淹魄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布堡距。 她就那樣靜靜地躺著甲锡,像睡著了一般兆蕉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缤沦,一...
    開(kāi)封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天虎韵,我揣著相機(jī)與錄音,去河邊找鬼缸废。 笑死包蓝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的企量。 我是一名探鬼主播测萎,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼届巩!你這毒婦竟也來(lái)了硅瞧?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤恕汇,失蹤者是張志新(化名)和其女友劉穎腕唧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瘾英,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡枣接,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缺谴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片但惶。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瓣赂,靈堂內(nèi)的尸體忽然破棺而出榆骚,到底是詐尸還是另有隱情,我是刑警寧澤煌集,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布妓肢,位于F島的核電站,受9級(jí)特大地震影響苫纤,放射性物質(zhì)發(fā)生泄漏碉钠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一卷拘、第九天 我趴在偏房一處隱蔽的房頂上張望喊废。 院中可真熱鬧,春花似錦栗弟、人聲如沸污筷。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瓣蛀。三九已至陆蟆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惋增,已是汗流浹背叠殷。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诈皿,地道東北人林束。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像稽亏,于是被迫代替她去往敵國(guó)和親壶冒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理措左,服務(wù)發(fā)現(xiàn)依痊,斷路器避除,智...
    卡卡羅2017閱讀 134,600評(píng)論 18 139
  • File類 File類用來(lái)操作文件路徑或文件夾路徑 絕對(duì)路徑從根目錄開(kāi)始 相對(duì)路徑在eclipse中代表當(dāng)前項(xiàng)目根...
    JerichoPH閱讀 574評(píng)論 0 3
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法怎披,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法瓶摆,繼承相關(guān)的語(yǔ)法凉逛,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,587評(píng)論 18 399
  • 我們要想實(shí)現(xiàn)IO的操作痪欲,就必須知道硬盤上文件的表現(xiàn)形式悦穿。而Java就提供了一個(gè)類File供我們使用。所以這篇我們來(lái)...
    清風(fēng)沐沐閱讀 2,883評(píng)論 1 9
  • 通過(guò)朋友圈一位云南支教的朋友业踢,第一次知道了簡(jiǎn)書栗柒。 第一印象:這個(gè)類似豆瓣的app~界面清新簡(jiǎn)潔,操作簡(jiǎn)單方便知举,很適...
    追夢(mèng)的sunflower閱讀 280評(píng)論 1 2