大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java File類的詳細介紹

Java File類的詳細介紹

更新時間:2022-06-13 10:58:47 來源:動力節(jié)點 瀏覽1729次

在本教程中,動力節(jié)點小編將進行Java File類概述,它是java.io API 的一部分。 File類使我們能夠處理文件系統(tǒng)上的文件和目錄。

1.創(chuàng)建文件對象

File 類 有 4 個公共構(gòu)造函數(shù)。根據(jù)開發(fā)者的需要,可以創(chuàng)建不同類型的File類實例。

File(String pathname) – 創(chuàng)建一個代表給定路徑名的實例

File(String parent, String child) – 創(chuàng)建一個實例,表示通過連接 父路徑和 子路徑形成的路徑

File(File parent, String child) – 創(chuàng)建一個實例,其路徑由另一個 File 實例表示的父路徑和子路徑連接而成

File(URI uri) – 創(chuàng)建一個代表給定統(tǒng)一資源標(biāo)識符的實例

2.使用文件類

File類 有許多方法允許我們使用和操作文件系統(tǒng)上的文件。我們將在這里重點介紹其中的一些。重要的是要注意File類不能修改或訪問它所代表的文件的內(nèi)容。

(1)創(chuàng)建和刪除目錄和文件

File類具有創(chuàng)建和刪除目錄和文件的 實例方法。目錄和文件分別使用mkdir和createNewFile方法創(chuàng)建。

使用 刪除方法刪除目錄和文件。所有這些方法都返回一個布爾值,當(dāng)操作成功時為真,否則為假:

@Test
public void givenDir_whenMkdir_thenDirIsDeleted() {
    File directory = new File("dir");
    assertTrue(directory.mkdir());
    assertTrue(directory.delete());
}
@Test
public void givenFile_whenCreateNewFile_thenFileIsDeleted() {
    File file = new File("file.txt");
    try {
        assertTrue(file.createNewFile());
    } catch (IOException e) {
        fail("Could not create " + "file.txt");
    }
    assertTrue(file.delete());
}

在上面的代碼片段中,我們還看到了其他有用的方法。

isDirectory方法可用于測試提供的名稱表示的文件是否為目錄,而isFile方法可用于測試提供的名稱表示的文件是否為文件。并且,我們可以使用exists方法 來測試一個目錄或文件是否已經(jīng)存在于系統(tǒng)中。

(2)獲取有關(guān)文件實例的元數(shù)據(jù)

File 類有許多返回有關(guān)File 實例的元數(shù)據(jù)的 方法。讓我們看看如何使用getName、getParentFile和 getPath方法:

@Test
public void givenFile_whenCreateNewFile_thenMetadataIsCorrect() {
    String sep = File.separator;
    File parentDir = makeDir("filesDir");
    File child = new File(parentDir, "file.txt");
    try {
        child.createNewFile();
    } catch (IOException e) {
        fail("Could not create " + "file.txt");
    }
    assertEquals("file.txt", child.getName());
    assertEquals(parentDir.getName(), child.getParentFile().getName());
    assertEquals(parentDir.getPath() + sep + "file.txt", child.getPath());
    removeDir(parentDir);
}

在這里,我們演示了驗證有關(guān)在目錄中創(chuàng)建的文件的元數(shù)據(jù)。我們還展示了如何找到文件的父級以及該文件的相對路徑。

(3)設(shè)置文件和目錄權(quán)限

File 類具有允許您設(shè)置文件或目錄權(quán)限的方法。 在這里,我們將看看setWritable和setReadable 方法:

@Test
public void givenReadOnlyFile_whenCreateNewFile_thenCantModFile() {
    File parentDir = makeDir("readDir");
    File child = new File(parentDir, "file.txt");
    try {
        child.createNewFile();
    } catch (IOException e) {
        fail("Could not create " + "file.txt");
    }
    child.setWritable(false);
    boolean writable = true;
    try (FileOutputStream fos = new FileOutputStream(child)) {
        fos.write("Hello World".getBytes()); // write operation
        fos.flush();
    } catch (IOException e) {
        writable = false;
    } finally {
        removeDir(parentDir);
    }
    assertFalse(writable);
}

在上面的代碼中,我們在顯式設(shè)置阻止任何寫入的權(quán)限后嘗試寫入文件。我們使用setWritable方法來做到這一點。不允許在寫入文件時嘗試寫入文件會導(dǎo)致拋出IOException。

接下來,我們在設(shè)置阻止任何讀取的權(quán)限后嘗試從文件中讀取。使用setReadable方法阻止讀取:

@Test
public void givenWriteOnlyFile_whenCreateNewFile_thenCantReadFile() {
    File parentDir = makeDir("writeDir");
    File child = new File(parentDir, "file.txt");
    try {
        child.createNewFile();
    } catch (IOException e) {
        fail("Could not create " + "file.txt");
    }
    child.setReadable(false);
    boolean readable = true;
    try (FileInputStream fis = new FileInputStream(child)) {
        fis.read(); // read operation
    } catch (IOException e) {
        readable = false;
    } finally {
        removeDir(parentDir);
    }
    assertFalse(readable);
}

同樣,JVM 將在嘗試讀取不允許讀取的文件時拋出IOException。

(4)列出目錄中的文件

File 類具有允許我們列出目錄中包含的文件的方法。 同樣,也可以列出目錄。在這里,我們將看看list和 list(FilenameFilter)方法:

@Test
public void givenFilesInDir_whenCreateNewFile_thenCanListFiles() {
    File parentDir = makeDir("filtersDir");
    String[] files = {"file1.csv", "file2.txt"};
    for (String file : files) {
        try {
            new File(parentDir, file).createNewFile();
        } catch (IOException e) {
            fail("Could not create " + file);
        }
    }
    //normal listing
    assertEquals(2, parentDir.list().length);
    //filtered listing
    FilenameFilter csvFilter = (dir, ext) -> ext.endsWith(".csv");
    assertEquals(1, parentDir.list(csvFilter).length);
    removeDir(parentDir);
}

我們創(chuàng)建了一個目錄并向其中添加了兩個文件——一個帶有csv 擴展名,另一個帶有 txt 擴展名。當(dāng)列出目錄中的所有文件時,我們得到了預(yù)期的兩個文件。當(dāng)我們通過過濾帶有csv擴展名的文件來過濾列表時,我們只返回一個文件。

(5)重命名文件和目錄

File類具有使用renameTo 方法重命名文件和目錄的 功能:

@Test
public void givenDir_whenMkdir_thenCanRenameDir() {
    File source = makeDir("source");
    File destination = makeDir("destination");
    boolean renamed = source.renameTo(destination);
    if (renamed) {
        assertFalse(source.isDirectory());
        assertTrue(destination.isDirectory());
        removeDir(destination);
    }
}

在上面的示例中,我們創(chuàng)建了兩個目錄——源目錄和目標(biāo)目錄。然后我們使用renameTo方法將源目錄重命名為目標(biāo)目錄。同樣可以用來重命名文件而不是目錄。

(6)獲取磁盤空間信息

File 類 還允許我們獲取磁盤空間信息。讓我們看一下getFreeSpace方法的演示:

@Test
public void givenDataWritten_whenWrite_thenFreeSpaceReduces() {
    String home = System.getProperty("user.home");
    String sep = File.separator;
    File testDir = makeDir(home + sep + "test");
    File sample = new File(testDir, "sample.txt");
    long freeSpaceBefore = testDir.getFreeSpace();
    try {
        writeSampleDataToFile(sample);
    } catch (IOException e) {
        fail("Could not write to " + "sample.txt");
    }
    long freeSpaceAfter = testDir.getFreeSpace();
    assertTrue(freeSpaceAfter < freeSpaceBefore);
    removeDir(testDir);
}

在此示例中,我們在用戶的主目錄中創(chuàng)建了一個目錄,然后在其中創(chuàng)建了一個文件。然后我們檢查了在用一些文本填充這個文件后主目錄分區(qū)上的可用空間是否發(fā)生了變化。提供有關(guān)磁盤空間信息的其他方法是getTotalSpace和 getUsableSpace。如果大家想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點的Java基礎(chǔ)教程,里面有更豐富的知識等著大家去學(xué)習(xí),希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 热久久在线 | 久久99国产精一区二区三区 | 日日摸日日碰日日狠狠 | 成人欧美一区二区三区黑人妖 | 国产欧美日韩精品一区二 | 欧美日韩国产在线成人网 | 视频在线日韩 | 九九热视频这里只有精品 | 亚欧毛片基地国产毛片基地 | 亚洲午夜日韩高清一区 | 九九免费精品视频在这里 | h片在线播放免费高清 | 免费看一级毛片欧美 | 国产精品人成 | 久久国产精品999 | 欧美精品日日鲁夜夜 | 成人欧美一区二区三区视频 | 国产精选91热在线观看 | 久久综合综合久久 | 久久99精品久久久久久秒播放器 | 欧美影院一区二区三区 | 久久成人亚洲 | 国产久7精品视频 | 成年女人色毛片免费看 | 久久免费视频在线观看30 | 日韩美女视频一区 | 亚洲欧美视频二区 | 综合亚洲一区二区三区 | 天天操国产 | 欧美一区二区日韩一区二区 | 欧美日韩成人 | 欧美精品久久久久久久影视 | 国产亚洲欧美一区二区 | 亚洲一区二区三区精品国产 | a在线视频| 欧美精品久久一区二区三区 | 欧美伊人久久大香线蕉综合69 | 91在线视频播放 | 亚洲精品丝袜在线一区波多野结衣 | 日韩你懂的 | 国产精品乱码一区二区三区 |