1. 程式人生 > >IO第一回 File類

IO第一回 File類

IO第一回:File類

標籤: IO流

java.io.File類

我們要想實現IO的操作,就必須知道硬碟上檔案的表現形式。

而Java就提供了一個類File供我們使用。

File是檔案和目錄(資料夾)路徑名的抽象表達形式,對於File類,我們要知道以下幾點:

  1. 凡是與輸入輸出相關的類,介面都定義在java.io包下;
  2. File是一個類,可以有構造器建立其物件。此物件對應著一個檔案或檔案目錄;
  3. File類的物件是與平臺無關的;
  4. File中的方法,僅涉及如何建立,刪除,重新命名等表面上的工作。涉及到檔案內容的,File做不了,必須由IO流完成;
  5. File類的物件常作為IO流的具體類的構造器的形參,告訴IO流往哪輸入輸出;

File類的構造器

構造方法有:

  • File(File parent, String child)父抽象路徑名子路徑名字串建立新的 File例項。

  • File(String pathname) 通過將給定的路徑名字串轉換為抽象路徑名來建立新的 File例項。

  • File(String parent, String child)父路徑名字串子路徑名字串建立新的 File例項。

  • File(URI uri) 通過將給定的 file: URI轉換為抽象路徑名來建立新的 File例項

出去URI的構造方法,其餘三種構造方法如下:

public class FileDemo {  
    public
static void main(String[] args) { // File(String pathname):根據一個路徑得到File物件 // 把f:\\java\\day19\\a.txt封裝成一個file物件 File file = new File("f:\\java\\day19\\a.txt"); // File(String parent,String child):根據一個目錄和一個子檔案/目錄得到File物件 File file2 = new File("f:\\java\\day19"
, "b.txt"); // File(File parent,String child):根據一個父File物件和一個子檔案/目錄得到File物件 File file3 = new File("f:\\java\\dy19"); File file4 = new File(file3, "a.txt"); // 以上三種方式其實效果一樣 } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

重要方法

訪問檔名

// 返回此抽象路徑名的絕對路徑名形式。
File    getAbsoluteFile()   

// 返回此抽象路徑名的絕對路徑名字串。
String    getAbsolutePath()   

// 返回此抽象路徑名的規範形式。
File    getCanonicalFile()  

// 返回此抽象路徑名的規範路徑名字串。
String    getCanonicalPath()   

// 返回此抽象路徑名指定的分割槽中未分配的位元組數。
long    getFreeSpace()   

// 返回由此抽象路徑名錶示的檔案或目錄的名稱。
String    getName()     

// 返回此抽象路徑名父目錄的路徑名字串;如果此路徑名沒有指定父目錄,則返回 null。
String    getParent()  

// 返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null。
File    getParentFile()    

// 將此抽象路徑名轉換為一個路徑名字串。
String    getPath()    

// 重新命名此抽象路徑名錶示的檔案。
boolean    renameTo(File dest)  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

檔案檢測

// 測試此抽象路徑名錶示的檔案或目錄是否存在。
boolean    exists()  

// 測試應用程式是否可以執行此抽象路徑名錶示的檔案。
boolean    canExecute()    

// 測試應用程式是否可以讀取此抽象路徑名錶示的檔案
boolean    canRead()       

// 測試應用程式是否可以修改此抽象路徑名錶示的檔案。
boolean    canWrite()      

// 測試此抽象路徑名是否為絕對路徑名。
boolean    isAbsolute()     

// 測試此抽象路徑名錶示的檔案是否是一個目錄。
boolean    isDirectory()   

// 測試此抽象路徑名錶示的檔案是否是一個標準檔案。
boolean    isFile()      

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

獲取常規檔案資訊

// 返回此抽象路徑名錶示的檔案最後一次被修改的時間。
long    lastModified()       

// 返回由此抽象路徑名錶示的檔案的長度。
long    length()    
  • 1
  • 2
  • 3
  • 4
  • 5

檔案操作相關

// 當且僅當不存在具有此抽象路徑名指定名稱的檔案時,不可分地建立一個新的空檔案。
boolean    createNewFile()         

// 在預設臨時檔案目錄中建立一個空檔案,使用給定字首和字尾生成其名稱。
static File    createTempFile(String prefix, String suffix)    

// 刪除此抽象路徑名錶示的檔案或目錄。
boolean    delete()            
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

目錄操作相關

// 返回一個字串陣列,這些字串指定此抽象路徑名錶示的目錄中的檔案和目錄。
String[]    list()           

// 返回一個字串陣列,這些字串指定此抽象路徑名錶示的目錄中滿足指定過濾器的檔案和目錄。
String[]    list(FilenameFilter filter)    

// 返回一個抽象路徑名陣列,這些路徑名錶示此抽象路徑名錶示的目錄中的檔案。
File[]    listFiles()                        

 // 返回抽象路徑名陣列,這些路徑名錶示此抽象路徑名錶示的目錄中滿足指定過濾器的檔案和目錄。
File[]    listFiles(FileFilter filter)       


// 建立此抽象路徑名指定的目錄。
boolean    mkdir()     

// 建立此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。
boolean    mkdirs()   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

演示:

package charIO;

/**
 * Created by japson on 8/17/2017.
 */
import java.io.File;
import java.io.IOException;

public class TestFile {
    public static void main(String[] args) throws IOException {
        File file0 = new File("E:\\IntelliJ IDEA\\TIJ\\src\\charIO\\test0.txt");
        File file1 = new File("E:\\IntelliJ IDEA\\TIJ\\src\\charIO\\test1.txt");
        File file2 = new File("test2.txt");
        File file3 = new File("E:\\IntelliJ IDEA\\TIJ\\src\\charIO\\test_file");

        System.out.println("獲取檔名:" + file1.getName());
        System.out.println("獲取檔案路徑:" + file1.getPath());
        System.out.println("獲取檔名的絕對形式:" + file1.getAbsoluteFile());
        System.out.println("獲取檔案的上層路徑:" + file1.getParent());
        System.out.println("獲取檔案的絕對路徑:" + file1.getAbsolutePath());

        System.out.println();

        System.out.println("獲取檔名:" + file3.getName());
        System.out.println("獲取檔案路徑:" + file3.getPath());
        System.out.println("獲取檔名的絕對形式:" + file3.getAbsoluteFile());
        System.out.println("獲取檔案的上層路徑:" + file3.getParent());
        System.out.println("獲取檔案的絕對路徑:" + file3.getAbsolutePath());

        //boolean renameTo(File newName):重新命名
        //file1.renameTo(file2):file1重新命名為file2,要求:file1檔案一定存在,file2檔案一定不存在
        System.out.println(file1.renameTo(file2));
        System.out.println(file1.renameTo(file0));

        System.out.println();

        System.out.println("檔案是否存在:" + file2.exists());
        System.out.println("檔案是否可寫:" + file2.canWrite());
        System.out.println("檔案是否可讀:" + file2.canRead());
        System.out.println("是檔案否:" + file2.isFile());
        System.out.println("是目錄否:" + file2.isDirectory());
        System.out.println("檔案最後一次修改時間:" + file2.lastModified());
        System.out.println("檔案的長度:" + file2.length());

        System.out.println();

        System.out.println("檔案是否存在:" + file3.exists());
        System.out.println("檔案是否可寫:" + file3.canWrite());
        System.out.println("檔案是否可讀:" + file3.canRead());
        System.out.println("是檔案否:" + file3.isFile());
        System.out.println("是目錄否:" + file3.isDirectory());
        System.out.println("檔案最後一次修改時間:" + file3.lastModified());
        System.out.println("檔案的長度:" + file3.length());

        System.out.println();

        System.out.println("是否成功刪除了檔案:" + file0.delete());

        if (!file0.exists()) {
            boolean b = file0.createNewFile();
            System.out.println("是否新建了檔案:" + b);
        }


        File file4 = new File("E:\\IntelliJ IDEA\\TIJ\\src\\charIO\\test_file1\\1");
        if (!file4.exists()) {
            boolean b = file4.mkdirs();
            System.out.println("是否成功建立目錄:" + b);
        }
        System.out.println(file4.getAbsolutePath());

        File file5 = new File("E:\\IntelliJ IDEA\\TIJ\\src\\charIO");
        String[] strings = file5.list();
        System.out.println("E:\\IntelliJ IDEA\\TIJ\\src\\charIO中的內容");
        for (String s : strings) {
            System.out.println(s);
        }

        File[] files = file5.listFiles();
        System.out.println("E:\\IntelliJ IDEA\\TIJ\\src\\charIO中的file");
        for (File f : files) {
            System.out.println(f.getName());
        }

    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88

輸出:

獲取檔名:test1.txt
獲取檔案路徑:E:\IntelliJ IDEA\TIJ\src\charIO\test1.txt
獲取檔名的絕對形式:E:\IntelliJ IDEA\TIJ\src\charIO\test1.txt
獲取檔案的上層路徑:E:\IntelliJ IDEA\TIJ\src\charIO
獲取檔案的絕對路徑:E:\IntelliJ IDEA\TIJ\src\charIO\test1.txt

獲取檔名:test_file
獲取檔案路徑:E:\IntelliJ IDEA\TIJ\src\charIO\test_file
獲取檔名的絕對形式:E:\IntelliJ IDEA\TIJ\src\charIO\test_file
獲取檔案的上層路徑:E:\IntelliJ IDEA\TIJ\src\charIO
獲取檔案的絕對路徑:E:\IntelliJ IDEA\TIJ\src\charIO\test_file
false
false

檔案是否存在:false
檔案是否可寫:false
檔案是否可讀:false
是檔案否:false
是目錄否:false
檔案最後一次修改時間:0
檔案的長度:0

檔案是否存在:true
檔案是否可寫:true
檔案是否可讀:true
是檔案否:false
是目錄否:true
檔案最後一次修改時間:1502949604701
檔案的長度:0

是否成功刪除了檔案:true
是否新建了檔案:true
E:\IntelliJ IDEA\TIJ\src\charIO\test_file1\1
E:\IntelliJ IDEA\TIJ\src\charIO中的內容
test0.txt
test2.txt
TestFile.java
test_file
test_file1
E:\IntelliJ IDEA\TIJ\src\charIO中的file
test0.txt
test2.txt
TestFile.java
test_file
test_file1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

ps:喜歡請左側點贊