欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

學習Java之File文件操作方法

 更新時間:2023年09月13日 08:24:46   作者:一一哥Sun  
這篇文章我們主要學習如何實現(xiàn)IO流的具體操作,但很多時候,IO流都會操作一個文件,所以我們需要先學習在Java中如何操作文件,包括文件及文件夾的創(chuàng)建、遍歷、刪除等,有了文件操作的基礎(chǔ),我們才能更好地操作IO流,文中有詳細的代碼示例,需要的朋友可以參考下

一. File文件類

1. 概述

在計算機系統(tǒng)中,文件是非常重要的信息存儲方式。為了讓我們方便的操作文件,Java標準庫java.io包中給我們提供了一個非常重要的File文件類。該類是唯一代表磁盤文件本身的對象,它提供了訪問和操作文件及目錄的一系列方法。如果我們想在程序中操作文件和目錄,比如新建、刪除、寫入、重命名文件,以及創(chuàng)建、移動和刪除目錄等操作,都可以通過File類來完成。

在Java中,F(xiàn)ile對象既可以表示文件,也可以表示目錄。特別要注意的是,如果我們想構(gòu)造一個File對象,即使傳入的這個文件或目錄不存在,代碼也不會出錯。這是因為構(gòu)造一個File對象時,并不會有任何磁盤操作,只有當我們調(diào)用了File對象的某些方法時,才會真正地進行磁盤操作。

2. 構(gòu)造方法

Java的File類給我們提供了如下幾個構(gòu)造方法,用于創(chuàng)建一個File對象:

  • File(String path):path表示路徑,如果path是真實存在的路徑,則該File對象表示的是一個目錄;如果path是文件名,則該File對象表示的是一個文件。
  • File(String path, String name):path是路徑名,name是文件名。
  • File(File dir, String name):dir是路徑對象,name是文件名。

我們使用上面的任意構(gòu)造方法,都可以創(chuàng)建出一個 File對象。創(chuàng)建出File對象后,我們就可以調(diào)用File對象的各種方法,對文件進行各種操作了。

3. 常用屬性

另外在File類中還有兩個很常用的靜態(tài)常量屬性,如下所示:

  • public static final String pathSeparator:分隔符,用于分隔連續(xù)的多個路徑,在Windows中代表";"。
  • public static final String separator:路徑分隔符,用來分隔同一個路徑字符串中的目錄,在Windows中代表"/"。

大家要注意,一般Windows的路徑分隔符是反斜線“\”,而Java程序中的反斜線卻表示轉(zhuǎn)義字符。但Java程序支持將斜線當成平臺無關(guān)的路徑分隔符,所以如果我們需要在Windows的路徑中使用路徑,可以使用兩條反斜線進行轉(zhuǎn)義,或直接使用正斜線“/”。比如我們在Windows系統(tǒng)中有一個文件:D:\java\HelloWorld.java,在Java代碼中,該路徑的可以寫成如下格式:

D:/java/HelloWorld.java 
或
D:\java\HelloWorld.java。

4. 常用方法

為了方便進行文件操作,F(xiàn)ile類給我們提供了多個方法,用于獲取文件的屬性、信息以及文件操作。下面給大家介紹一些常用的方法:

4.1 獲取文件名和路徑

  • getName():獲取文件名;
  • getPath():獲取文件路徑;
  • getAbsolutePath():獲取文件的絕對路徑;
  • getParent():獲取文件的父路徑;
  • getParentFile():獲取文件的父路徑的File對象。

4.2 獲取文件信息

  • length():獲取文件的長度(以字節(jié)為單位);
  • lastModified():獲取文件的最后修改時間,返回的是毫秒值;
  • exists():判斷文件是否存在;
  • isFile():判斷是否是文件;
  • isDirectory():判斷是否是目錄;
  • canRead():判斷文件是否可讀;
  • canWrite():判斷文件是否可寫。

4.3 文件操作

  • createNewFile():創(chuàng)建一個空文件,如果文件已經(jīng)存在,則不創(chuàng)建;
  • delete():刪除文件或目錄,如果文件或目錄不存在,則返回false;
  • mkdir():創(chuàng)建一個目錄,如果目錄已經(jīng)存在,則不創(chuàng)建;
  • mkdirs():創(chuàng)建一個多級目錄,如果目錄已經(jīng)存在,則不創(chuàng)建;
  • renameTo(File dest):將文件重命名為指定的文件名或路徑。

4.4 遍歷操作

  • list():遍歷目錄中的文件,返回由File對象表示目錄中所有文件和子目錄名稱組成的字符串數(shù)組,如果調(diào)用的 File對象不是目錄,則返回null;
  • list(FilenameFilter filter):返回文件數(shù)組中僅包含符合filter過濾器的文件和目錄,如果filter為 null,則接受所有的名稱。

接下來會通過一些案例來講解這些方法的具體使用。

5. 創(chuàng)建文件和目錄

如果我們想要使用File類來訪問文件系統(tǒng)中的文件和目錄,首先需要創(chuàng)建一個File對象。File類的構(gòu)造方法有多種方式,接下來就說說幾種常見的方式。

5.1 通過文件路徑創(chuàng)建File對象

可以使用文件的路徑創(chuàng)建一個File對象,例如:

File file = new File("F:/example/file.txt");

上面這行代碼將創(chuàng)建一個File對象,它代表文件系統(tǒng)中路徑為"F:/example/file.txt"的文件。但是大家要注意,F(xiàn)ile對象只是用來表示文件和目錄的路徑名,并不一定表示實際的文件和目錄。如果我們想操作實際的文件和目錄,必須使用File對象的相關(guān)方法來執(zhí)行操作。所以上面的這行代碼,并不會真的創(chuàng)建出對應的目錄和文件,我們需要通過mkdir()、mkdirs()和createNewFile()方法才能創(chuàng)建出對應的目錄和文件。

另外還請大家注意,即使該文件不存在,也不會報錯。而且該文件是一個空白的文件,如果我們想往該文件中添加內(nèi)容,需要利用IO流往里添加內(nèi)容。完整代碼如下:

public class Demo01 {
	public static void main(String[] args) {
        //使用分隔符常量,屏蔽不同系統(tǒng)的路徑符號差異
        //String path="F:" + File.separator + "example" + File.separator + "file.txt";
        //File file = new File(path);
        //path=F:\example\file.txt
        //System.out.println("path="+file.getPath());
        //該行代碼只是創(chuàng)建出File對象,但并不會真的創(chuàng)建出對應的目錄和文件
        File file = new File("F:/example/file.txt");
        try {
            // 文件操作
            if (!file.exists()) {
                //真正的創(chuàng)建文件
                file.createNewFile();
                System.out.println("文件創(chuàng)建成功!");
            } else {
                System.out.println("文件已經(jīng)存在!");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
	}
}

大家要注意,如果我們的代碼要運行在不同的操作系統(tǒng)中,路徑的分隔符是不一樣的,例如:

  • Windows中使用反斜杠\表示目錄的分隔符;
  • Linux中使用正斜杠/表示目錄的分隔符。

所以為了讓我們的程序具有更好的可移植性,可以在編寫路徑時根據(jù)程序所在的操作系統(tǒng),使用符合本地操作系統(tǒng)要求的分隔符,此時就可以使用File類提供的兩個分隔符常量。

5.2 通過父目錄和子文件名創(chuàng)建File對象

我們還可以使用父目錄和子文件名來創(chuàng)建一個File對象,例如:

File parentDir = new File("F:/example"); 
File file = new File(parentDir, "file.txt");

這行代碼會創(chuàng)建一個File對象,它代表文件系統(tǒng)中路徑為"F:/example/file.txt"的文件。如果父目錄不存在,會自動創(chuàng)建出來。

5.3 通過URI創(chuàng)建File對象

我們還可以使用URI(統(tǒng)一資源標識符)創(chuàng)建一個File對象,例如:

File file = new File(new URI("file:///F:/example/file.txt"));

該代碼會創(chuàng)建一個File對象,它代表文件系統(tǒng)中路徑為"F:/example/file.txt"的文件。請注意,如果我們使用的URI格式不正確,會拋出異常。

5.4 創(chuàng)建單個目錄

除了能創(chuàng)建文件,F(xiàn)ile類還提供了訪問和操作文件系統(tǒng)中目錄的方法。我們可以使用mkdir()方法創(chuàng)建單個目錄。例如,以下代碼會創(chuàng)建出一個名為"example"的目錄。

import java.io.File;
public class Demo01 {
    public static void main(String[] args) {
        //該行代碼只是創(chuàng)建出File對象,但并不會真的創(chuàng)建出對應的目錄和文件
        //File file = new File("F:/example/file.txt");		
        File dir = new File("F:/example");
        if (!dir.exists()) {//判斷目錄是否存在
            //如果目錄不存在,則創(chuàng)建出來
            boolean success = dir.mkdir();
            if (success) {
                System.out.println("目錄創(chuàng)建成功");
            } else {
                System.out.println("目錄創(chuàng)建失敗");
            }
        }
    }
}

5.5 創(chuàng)建多級目錄

我們還可以使用mkdirs()方法來創(chuàng)建出一個多級目錄,如果目錄已經(jīng)存在,則不創(chuàng)建。

import java.io.File;
public class Demo01 {
    public static void main(String[] args) {
        //創(chuàng)建多級目錄
        File dirs = new File("F:\testDir\testSubDir");
        if (dirs.mkdirs()) {
            System.out.println("多級目錄創(chuàng)建成功!");
        } else {
            System.out.println("多級目錄已經(jīng)存在!");
        }
    }
}

6. 獲取文件信息

創(chuàng)建出File文件和目錄之后,接下來我們還可以獲取文件與目錄的相關(guān)信息,F(xiàn)ile類提供了多個方法用于獲取文件的屬性及信息,使用起來很方便,案例如下:

public class Demo03 {
    public static void main(String[] args) {
        //創(chuàng)建單級目錄
        File file = new File("F:/example/file.txt");
        // 獲取文件名和路徑
        System.out.println("文件名:" + file.getName());
        System.out.println("文件路徑:" + file.getPath());
        System.out.println("文件絕對路徑:" + file.getAbsolutePath());
        System.out.println("文件父路徑:" + file.getParent());
        System.out.println("文件父路徑File對象:" + file.getParentFile());
        // 獲取文件信息
        System.out.println("文件長度:" + file.length());
        System.out.println("最后修改時間:" + file.lastModified());
        System.out.println("是否存在:" + file.exists());
        System.out.println("是否是文件:" + file.isFile());
        System.out.println("是否是目錄:" + file.isDirectory());
        System.out.println("是否可讀:" + file.canRead());
        System.out.println("是否可寫:" + file.canWrite());
    }
}

7. 重命名與移動文件

如果我們需要將一個文件重命名,或者是把文件從一個位置移動到另一個位置,可以使用renameTo()方法。

public class Demo04 {
    public static void main(String[] args) {
        File oldFile = new File("F:/example/newFile2.txt");
        File newFile = new File("F:/example2/newFile22.txt");
        if(oldFile.exists()) {
            //重命名文件。如果新文件所在的目錄與之前的文件不是同一目錄,則可以實現(xiàn)文件的移動,否則就是單純重命名
            boolean result = oldFile.renameTo(newFile);
            if(result) {
                System.out.println("重命名成功");
            }else {
                System.out.println("重命名失敗");
            }
         }
    }
}

大家要注意,如果新文件所在的目錄與之前的舊文件不在同一目錄,則會實現(xiàn)文件的移動,否則就是單純重命名。

8. 刪除文件和目錄

我們可以使用delete方法來刪除一個文件或目錄。

public class Demo05 {
    public static void main(String[] args) {
        File file = new File("F:/example/file.txt");
        if(file.exists()) {
            boolean result = file.delete();
            if(result) {
                System.out.println("刪除成功");
            }else {
                System.out.println("刪除失敗");
            }
        }
    }
}

9. 遍歷文件

我們可以使用list()方法來遍歷一個目錄。假設我們想遍歷C盤根目錄下的所有文件和目錄,并顯示出文件或目錄名稱、類型及大小,則實現(xiàn)代碼如下:

public class Demo06 {
    public static void main(String[] args) {
        File file = new File("C:/");
        // 調(diào)用不帶參數(shù)的list()方法
        String fileList[] = file.list(); 
        for (int i = 0; i < fileList.length; i++) { // 遍歷返回的字符數(shù)組
            System.out.print(fileList[i] + "\t\t");
            System.out.print((new File("F:/", fileList[i])).isFile() ? "文件" + "\t\t" : "文件夾" + "\t\t");
            System.out.println((new File("F:/", fileList[i])).length() + "字節(jié)");
        }
    }
}

大家要注意,list()方法返回的數(shù)組中只包含文件名稱,但不包含路徑,也不保證所得數(shù)組中相同的字符串會以特定順序出現(xiàn),特別是不保證它們會按字母順序出現(xiàn)。

二. Path路徑類

1. 概述

為了方便我們進行文件路徑的操作,Java 7中還給我們提供了一個Path類,它位于java.nio.file包中,是一個用于操作文件路徑的工具類。Path對象和File對象類似,但操作起來更簡單。

2. Path對象創(chuàng)建方式

我們在使用Path類之前,需要先創(chuàng)建一個Path對象,Java中給我們提供了多種創(chuàng)建Path對象的方式。接下來就給大家說一下這幾種方法的使用。

2.1 通過文件路徑字符串創(chuàng)建

我們可以使用Path類的靜態(tài)方法get(String first, String... more)來創(chuàng)建一個Path對象。其中,第一個參數(shù)是文件路徑的根路徑,第二個參數(shù)及以后的參數(shù)是路徑的各個部分。

Path path = Path.get("F:/workspace", "test", "example.txt");

2.2 通過URI創(chuàng)建

我們可以使用Path類的靜態(tài)方法get(URI uri)創(chuàng)建Path對象,URI可以是一個本地文件路徑,也可以是一個遠程文件路徑。

URI uri = new URI("file:///F:/workspace/test/example.txt"); 
Path path = Path.get(uri);

2.3 通過文件對象創(chuàng)建

我們還可以使用文件對象的toPath()方法創(chuàng)建Path對象。

File file = new File("D:/workspace/test/example.txt"); 
Path path = file.toPath();

2.4 通過系統(tǒng)屬性創(chuàng)建

另外還可以使用系統(tǒng)屬性user.dir獲取當前工作目錄,然后通過Path類的靜態(tài)方法get(String first, String... more)創(chuàng)建一個Path對象。

Path path = Path.get(System.getProperty("user.dir"), "test", "example.txt");

3. 常用方法

創(chuàng)建出Path對象之后,就可以通過Path類給我們提供的一些常用方法,如創(chuàng)建、刪除、移動、復制等,對文件路徑進行操作了。以下是總結(jié)的Path對象方法的使用案例,大家來看看吧。

3.1 toAbsolutePath()

獲取絕對路徑。

Path path = Path.get("test", "example.txt"); 
Path absolutePath = path.toAbsolutePath();

3.2 getParent()

獲取父路徑。

Path path = Path.get("test", "example.txt"); 
Path parentPath = path.getParent();

3.3 getFileName()

獲取文件名。

Path path = Path.get("test", "example.txt"); 
Path fileName = path.getFileName();

3.4 getNameCount()

獲取路徑名稱的數(shù)量。

Path path = Path.get("F:/workspace/test/example.txt"); 
int nameCount = path.getNameCount();

3.5 getName(int index)

獲取指定索引位置的路徑名稱。

Path path = Path.get("F:/workspace/test/example.txt"); 
Path name = path.getName(2); // 返回test

3.6 subpath(int beginIndex, int endIndex)

獲取路徑的子路徑。

Path path = Path.get("F:/workspace/test/example.txt"); 
Path subPath = path.subpath(0, 2); // 返回F:/workspace/test

3.7 startsWith(Path other)

判斷當前路徑是否以指定路徑開始。

Path path = Path.get("F:/workspace/test/example.txt"); 
Path otherPath = Path.get("F:/workspace/test"); 
boolean startsWith = path.startsWith(otherPath); // 返回true

好了,以上就是Path類及其方法的使用了,是不是很簡單呢?

四. 結(jié)語

至此,就把File和Path對象給大家介紹完畢了,今天的重點內(nèi)容如下:

  • 創(chuàng)建File對象本身不涉及IO操作;
  • File類提供了多個創(chuàng)建對象的構(gòu)造方法;
  • 掌握File文件和目錄的創(chuàng)建、刪除、重命名等方法。

以上就是學習Java之File文件操作方法的詳細內(nèi)容,更多關(guān)于Java File文件操作的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java如何獲取系統(tǒng)CPU、內(nèi)存占用

    java如何獲取系統(tǒng)CPU、內(nèi)存占用

    這篇文章主要介紹了java如何獲取系統(tǒng)CPU、內(nèi)存占用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Java獲取項目路徑的多種方式

    Java獲取項目路徑的多種方式

    這篇文章主要介紹了Java獲取項目路徑的多種方式,這時候就需要用java給我們提供的一些獲取相對路徑方法了,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-01-01
  • Java十大經(jīng)典排序算法圖解

    Java十大經(jīng)典排序算法圖解

    這篇文章主要介紹了Java十大經(jīng)典排序算法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • Java編程實現(xiàn)計算兩個日期的月份差實例代碼

    Java編程實現(xiàn)計算兩個日期的月份差實例代碼

    這篇文章主要介紹了Java編程實現(xiàn)計算兩個日期的月份差實例代碼,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • java實現(xiàn)的新浪微博分享代碼實例

    java實現(xiàn)的新浪微博分享代碼實例

    這篇文章主要介紹了java實現(xiàn)的新浪微博分享代碼實例,是通過新浪API獲得授權(quán),然后接受客戶端請求的數(shù)據(jù),第三方應用發(fā)送請求消息到微博,喚起微博分享界面,非常的實用,有相同需要的小伙伴可以參考下。
    2015-03-03
  • 詳解JUnit5參數(shù)化測試的幾種方式

    詳解JUnit5參數(shù)化測試的幾種方式

    參數(shù)化測試一直是津津樂道的話題,我們都知道JMeter有四種參數(shù)化方式:用戶自定義變量、用戶參數(shù)、CSV文件、函數(shù)助手,那么JUnit5有哪些參數(shù)化測試的方式呢
    2021-07-07
  • Spring注解@Value在controller無法獲取到值的解決

    Spring注解@Value在controller無法獲取到值的解決

    這篇文章主要介紹了Spring注解@Value在controller無法獲取到值的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 5分鐘搞定java單例模式

    5分鐘搞定java單例模式

    單例模式(Singleton?Pattern)是?Java?中最簡單的設計模式之一。這種類型的設計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式,本文給大家介紹下java單例模式的相關(guān)知識,感興趣的朋友一起看看吧
    2022-03-03
  • SpringCloud服務實現(xiàn)同時使用eureka和nacos方法

    SpringCloud服務實現(xiàn)同時使用eureka和nacos方法

    這篇文章主要介紹了SpringCloud服務實現(xiàn)同時使用eureka和nacos方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01
  • IntelliJ IDEA 部署 Web 項目,看這一篇夠了!

    IntelliJ IDEA 部署 Web 項目,看這一篇夠了!

    這篇文章主要介紹了IntelliJ IDEA 部署 Web 項目的圖文教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05

最新評論