Java File類

一 File 類

File 是文件或者目錄的抽象表示形式 .也就是說它既可以表示一個標準文件(比如 : *.txt等)也可以表示一個目錄(一組文件的集合).

說明 : 由于本文只是學習File類的相關API,因此直接使用代碼來測試API,代碼中有相應注釋. 因此在代碼之外不會有過多的文字描述.

1.1 File 類的靜態(tài)成員.

注意 : 名稱 != 路徑

// 與系統(tǒng)有關的默認 名稱 分割符.
System.out.println("名稱分割符 : " + File.separator);
System.out.println("名稱分割符 : " + File.separatorChar);
// 與系統(tǒng)有關的 路徑 分隔符
System.out.println("路徑分割符 : " + File.pathSeparator);
System.out.println("路徑分割符 : " + File.pathSeparatorChar);
// 輸出
// 名稱分割符 : \
// 名稱分割符 : \
// 路徑分割符 : ;
// 路徑分割符 : ;

1.2 創(chuàng)建 File 和 文件.

/**
 * 創(chuàng)建和修改.
 */
public static void testFile_04() {
    // 創(chuàng)建 File ,如果文件路徑不存在則同樣可以創(chuàng)建一個File實例.
    // 因此不要使用 file==null 判斷文件是否存在.應該使用  file.exists();
    File file1 = new File("D:/TestForlder/123.txt");
    System.out.println("存在 : " + file1.exists());
    // 當文件不存在時創(chuàng)建文件
    try {
        System.out.println(file1.createNewFile());
    } catch (IOException e) {
        e.printStackTrace();
    }
    // 創(chuàng)建臨時文件
    try {
        // 注意文件名稱不是 "456.java" ,而是 "456" + "系統(tǒng)生成的字符串" + ".java"
        // 臨時文件 : D:\TestForlder\4563410495359450983005.java
        File file2 = File.createTempFile("456", ".java",new File("D:/TestForlder"));
        System.out.println("臨時文件 : " + file2.getAbsolutePath());
    } catch (IOException e) {
        e.printStackTrace();
    }
    // 刪除文件
    System.out.println(file1.delete());
    // 在虛擬機終止時哄陶,請求刪除此抽象路徑名表示的文件或目錄。
    new File("D:/TestForlder/1.java").deleteOnExit();
    
    // 創(chuàng)建路徑 , 父目錄必須存在.不會自動創(chuàng)建父目錄. 
    System.out.println("創(chuàng)建路徑 : " + new File("D:/TestForlder/111").mkdir());
    // 創(chuàng)建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。
    System.out.println("遞歸創(chuàng)建目錄 : " + new File("D:/TestForlder/222/333").mkdirs());
    // 重命名文件.
    System.out.println(new File("D:/TestForlder/2.java")
            .renameTo(new File("D:/TestForlder/重命名.java")));
}

1.3 設置文件屬性.

/**
 * 設置文件屬性.
 */
public static void testFile_05() {
    File file = new File("D:/TestForlder/3.java");
    // 設置 所有者執(zhí)行權限
    file.setExecutable(true);
    // 設置所有者或所有用戶執(zhí)行權限
    file.setExecutable(true, false);
    // 設置最后修改時間
    file.setLastModified(123);
    // 設置所有者讀權限
    file.setReadable(true);
    // 設置所有者或所有用戶的讀
    file.setReadable(true, false);
    // 設置只讀
    file.setReadOnly();
    // 設置所有者寫權限
    file.setWritable(true);
    // 設置所有者或者所有用戶的寫權限
    file.setWritable(true, false);
}

1.4 基本信息API

/**
 * File 獲取信息.
 */
public static void testFile_03() {
    // getName() :  返回由此抽象路徑名表示的文件或目錄的名稱醋奠。該名稱是路徑名名稱序列中的最后一個名稱丸相。如果路徑名名稱序列為空,則返回空字符串绝页。
    // getPath() :  將此抽象路徑名轉換為一個路徑名字符串晃虫。所得字符串使用默認名稱分隔符分隔名稱序列中的名稱皆撩。
    // getParent() : 返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null扛吞。
    // 局對路徑
    File file = new File("D:/TestForlder");
    System.out.println("絕對路徑 : " + file.getPath());
    // 相對路徑
    File file2 = new File(".");
    System.out.println("相對路徑 : " + file2.getPath());
    // 獲取絕對路徑 File JDK 文檔上說是相當于 : new File(file2.getAbsolutePath());
    File fileAb = file2.getAbsoluteFile();
    File fileAb2 = new File(file.getAbsolutePath());
    System.out.println("絕對路徑文件 : " + fileAb.getPath());
    // File 對象的局對路徑.
    System.out.println("絕對路徑 : " + file.getAbsolutePath());
    // 指定路徑所在分區(qū)的剩余空間.
    System.out.println("可用空間 : " + file.getFreeSpace() / (1024 * 1024 * 1024) + " G");
    // 獲取父目錄名稱
    System.out.println("父目錄名稱 : " + file.getParent());
    // 此路徑上的總空間 
    System.out.println("總空間 : " + file.getTotalSpace() / (1024 * 1024 * 1024) + " G");
    // 抽象路徑名指定的分區(qū)上可用于此虛擬機的字節(jié)數(shù)呻惕。
    System.out.println("JVM 可用空間 : " + file.getUsableSpace() / (1024 * 1024 * 1024) + " G");
    // 最后修改時間
    System.out.println("最后修改時間 : " + file.lastModified());
    // 文件長度
    System.out.println("文件長度 : " + file.length());
    System.out.println("執(zhí)行 : " + file.canExecute());
    System.out.println("可讀 : " + file.canRead());
    System.out.println("可寫 : " + file.canWrite());
    System.out.println("存在 : " + file.exists());
    System.out.println("絕對路徑 : " + file.isAbsolute());
    System.out.println("目錄 : " + file.isDirectory());
    System.out.println("標準文件 : " + file.isFile());
    System.out.println("隱藏文件 : " + file.isHidden());
}

1.6 基本目錄操作

/**
 * 目錄下文件.
 */
public static void testFile_01() {
    // 文件路徑.
    String filePath = "D:/TestForlder";
    // 創(chuàng)建目錄File對象.
    File file = new File(filePath);
    // 獲取目錄下的所有文件. 使用正則表達式查找所有的 ".java" 文件.
    String[] list = file.list(new MainEntry.DirFilter("\\w+.java"));
    // 排序
    Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
    // 打印
    for (String string : list) {
        System.out.println("文件 : D:/TestFordler/" + string);
    }
}

/**
 * @author WSJ
 * 文件名稱過濾器,<br>
 * 該類實現(xiàn)了 `FilenameFilter`接口.該接口只有一個`accept()`方法
 * 該目錄下的每一個文件口會執(zhí)行該方法,來確定是否符合條件.
 */
public static class DirFilter implements FilenameFilter {
    // 正則表達式
    private Pattern mPattern;
    public DirFilter(String regex) {
        mPattern = Pattern.compile(regex);
    }
    @Override
    public boolean accept(File dir, String name) {
        // 使用正則表達式過濾文件, 每一個文件都會在這個方法中進行判斷是否符合條件.
        return mPattern.matcher(name).matches();
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市滥比,隨后出現(xiàn)的幾起案子亚脆,更是在濱河造成了極大的恐慌,老刑警劉巖盲泛,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件濒持,死亡現(xiàn)場離奇詭異,居然都是意外死亡寺滚,警方通過查閱死者的電腦和手機弥喉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玛迄,“玉大人,你說我怎么就攤上這事棚亩”鸵椋” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵讥蟆,是天一觀的道長勒虾。 經常有香客問我,道長瘸彤,這世上最難降的妖魔是什么修然? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮质况,結果婚禮上愕宋,老公的妹妹穿的比我還像新娘。我一直安慰自己结榄,他們只是感情好中贝,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著臼朗,像睡著了一般邻寿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上视哑,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天绣否,我揣著相機與錄音,去河邊找鬼挡毅。 笑死蒜撮,一個胖子當著我的面吹牛,可吹牛的內容都是我干的慷嗜。 我是一名探鬼主播淀弹,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼丹壕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了薇溃?” 一聲冷哼從身側響起菌赖,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沐序,沒想到半個月后琉用,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡策幼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年邑时,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片特姐。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡晶丘,死狀恐怖,靈堂內的尸體忽然破棺而出唐含,到底是詐尸還是另有隱情浅浮,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布捷枯,位于F島的核電站滚秩,受9級特大地震影響,放射性物質發(fā)生泄漏淮捆。R本人自食惡果不足惜郁油,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望攀痊。 院中可真熱鬧桐腌,春花似錦、人聲如沸蚕苇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涩笤。三九已至嚼吞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蹬碧,已是汗流浹背舱禽。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留恩沽,地道東北人誊稚。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親里伯。 傳聞我的和親對象是個殘疾皇子城瞎,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法疾瓮,內部類的語法脖镀,繼承相關的語法,異常的語法狼电,線程的語...
    子非魚_t_閱讀 31,602評論 18 399
  • File類 ??File類是java.io包下代表與平臺無關的文件和目錄蜒灰,也就是說如果希望在程序中操作文件和目錄都...
    琦琦出去玩了閱讀 332評論 0 0
  • File類將文件和文件夾以及路徑封裝成對象,以提供更多的方法和屬性來操作這些對象肩碟。File類不屬于流對象强窖,不能讀寫...
    比軒閱讀 1,106評論 0 2
  • 1 有段時間朋友小A和我說她有些熬不下去了翅溺。 我問她,為什么髓抑? 過了半晌未巫,微信亮了一下,只有短短的兩個字:“沒錢启昧。...
    少女陸sunny閱讀 1,481評論 17 33
  • 偶然聽到周杰倫08年的《稻香》,歌詞里說“打開電視看看 多少人為生命在努力地走下去 我們是不是該知足”劈伴。那年地震密末,...
    Sisi_1204閱讀 173評論 0 0