File

File

  1. File類描述的是一個(gè)文件或文件夾。(文件夾也可以稱為目錄)
  2. 該類的出現(xiàn)是對(duì)文件系統(tǒng)的中的文件以及文件夾進(jìn)行對(duì)象的封裝。可以通過(guò)對(duì)象的思想來(lái)操作文件以及文件夾。
  3. 可以用面向?qū)ο蟮奶幚韱?wèn)題,通過(guò)該對(duì)象的方法,可以得到文件或文件夾的信息方便了對(duì)文件與文件夾的屬性信息進(jìn)行操作。
  4. 文件包含很多的信息:如文件名、創(chuàng)建修改時(shí)間、大小、可讀可寫屬性等。

字段

static String pathSeparator 
      與系統(tǒng)有關(guān)的路徑分隔符,為了方便,它被表示為一個(gè)字符串。 
static char pathSeparatorChar 
      與系統(tǒng)有關(guān)的路徑分隔符。 
static String separator 
      與系統(tǒng)有關(guān)的默認(rèn)名稱分隔符,為了方便,它被表示為一個(gè)字符串。 
static char separatorChar 
      與系統(tǒng)有關(guān)的默認(rèn)名稱分隔符。 

System.out.println(File.pathSeparator);         //;
System.out.println(File.pathSeparatorChar);     //;
System.out.println(File.separator);             //\(Windows下)
System.out.println(File.separatorChar);         //\(Windows下)

構(gòu)造方法摘要

File(File parent, String child) 
      根據(jù) parent 抽象路徑名和 child 路徑名字符串創(chuàng)建一個(gè)新 File 實(shí)例。 
File(String pathname) 
      通過(guò)將給定路徑名字符串轉(zhuǎn)換為抽象路徑名來(lái)創(chuàng)建一個(gè)新 File 實(shí)例。 
File(String parent, String child) 
      根據(jù) parent 路徑名字符串和 child 路徑名字符串創(chuàng)建一個(gè)新 File 實(shí)例。 

方法

boolean canExecute() 
      測(cè)試應(yīng)用程序是否可以執(zhí)行此抽象路徑名表示的文件。 
boolean canRead() 
      測(cè)試應(yīng)用程序是否可以讀取此抽象路徑名表示的文件。 
boolean canWrite() 
      測(cè)試應(yīng)用程序是否可以修改此抽象路徑名表示的文件。

boolean createNewFile() 
      當(dāng)且僅當(dāng)不存在具有此抽象路徑名指定名稱的文件時(shí),不可分地創(chuàng)建一個(gè)新的空文件。

    File f = new File("a.java");
    try {
        f.createNewFile();
    } catch (IOException e) {
        e.printStackTrace();
    }


static File createTempFile(String prefix, String suffix) 
      在默認(rèn)臨時(shí)文件目錄中創(chuàng)建一個(gè)空文件,使用給定前綴和后綴生成其名稱。 prefix 參數(shù)至少必須是三個(gè)字節(jié)長(zhǎng)
static File createTempFile(String prefix, String suffix, File directory) 
       在指定目錄中創(chuàng)建一個(gè)新的空文件,使用給定的前綴和后綴字符串生成其名稱。 prefix 參數(shù)至少必須是三個(gè)字節(jié)長(zhǎng)

    File f = new File(".\\");
    try {
        File.createTempFile("abc", ".java", f);
    } catch (IOException e) {
        e.printStackTrace();
    }

在項(xiàng)目根目錄新建了文件 abc1006817782508133744.java

boolean mkdir() 
      創(chuàng)建此抽象路徑名指定的目錄。 父文件夾必須存在
boolean mkdirs() 
      創(chuàng)建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。 父文件夾可以不存在

    File f = new File("C:\\Users\\Administrator\\Desktop\\11\\12\\123");
    f.mkdirs();

boolean delete() 
      刪除此抽象路徑名表示的文件或目錄。 
不放入回收站直接刪除,找不回的那種,刪除文件夾是只能刪除空文件夾

    public static void main(String[] args) {
        File f = new File("C:\\Users\\Administrator\\Desktop\\11");
        deleteFile(f);
    }
    private static void deleteFile(File f) {
        File[] list = f.listFiles();
        if(list != null) {
            for (File file : list) {
                if(file.isDirectory()) {
                    deleteFile(file);
                }
                file.delete();
            }
        }
        f.delete();
    }


void deleteOnExit() 
      在虛擬機(jī)終止時(shí),請(qǐng)求刪除此抽象路徑名表示的文件或目錄。 
調(diào)用時(shí)不會(huì)刪除,在虛擬機(jī)終止時(shí)刪除

boolean renameTo(File dest) 
      重新命名此抽象路徑名表示的文件。 
當(dāng)前目錄下重命名,不同路徑復(fù)制
long length() 
      返回由此抽象路徑名表示的文件的長(zhǎng)度。
boolean isDirectory() 
      測(cè)試此抽象路徑名表示的文件是否是一個(gè)目錄。 
boolean isFile() 
      測(cè)試此抽象路徑名表示的文件是否是一個(gè)標(biāo)準(zhǔn)文件。 
boolean isHidden() 
      測(cè)試此抽象路徑名指定的文件是否是一個(gè)隱藏文件。 

String[] list() 
      返回一個(gè)字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。 
String[] list(FilenameFilter filter) 
      返回一個(gè)字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中滿足指定過(guò)濾器的文件和目錄。 
File[] listFiles() 
      返回一個(gè)抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中的文件。 
File[] listFiles(FileFilter filter) 
      返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過(guò)濾器的文件和目錄。 
File[] listFiles(FilenameFilter filter) 
      返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過(guò)濾器的文件和目錄。 
static File[] listRoots() 
      列出可用的文件系統(tǒng)根。 

    FilenameFilter實(shí)現(xiàn)此接口的類實(shí)例可用于過(guò)濾器文件名
    FileFilter用于抽象路徑名的過(guò)濾器。 

String getName() 
      返回由此抽象路徑名表示的文件或目錄的名稱。

    public static void main(String[] args) {
        File f = new File("./b.txt");
        System.out.println(f.getName());
    }
//b.txt

此時(shí)如果沒(méi)有該文件文件,執(zhí)行時(shí)依然能獲取到名字,因?yàn)樘摂M機(jī)在內(nèi)存中創(chuàng)建了文件 

路徑

路徑就是文件或文件夾所在的位置。

路徑分割符

  1. 上下級(jí)文件夾之間使用分隔符分開(kāi):
    在Windows中分隔符為'',在Unix/Linux中分隔符為'/'。

  2. 跨平臺(tái)的目錄分隔符
    更專業(yè)的做法是使用File.separatorChar,這個(gè)值就會(huì)根據(jù)系統(tǒng)得到的相應(yīng)的分割符。

     例:new File("c:" + File.separatorChar + "a.txt");
     注意,如果是使用"\",則需要進(jìn)行轉(zhuǎn)義,寫為"\\"才可以,如果是兩個(gè)"\",則寫為"\\\\"。
    

絕對(duì)路徑與相對(duì)路徑

  1. 絕對(duì)路徑

    • 對(duì)于UNIX平臺(tái),絕對(duì)路徑名的前綴是"/"。相對(duì)路徑名沒(méi)有前綴。
    • 對(duì)于Windows平臺(tái),絕對(duì)路徑名的前綴由驅(qū)動(dòng)器號(hào)和一個(gè)":"組成,例"c:\..."。相對(duì)路徑?jīng)]有盤符前綴。
  2. 相對(duì)路徑:
    相對(duì)路徑是指相對(duì)于某位置的路徑,是指相對(duì)于當(dāng)前目錄。
    在執(zhí)行Java程序時(shí),相對(duì)路徑為執(zhí)行java命令時(shí)當(dāng)前所在的目錄。

     File file = new File("a.txt");
     File file = new File(".\\a.txt");
     都表示本目錄下文件
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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