Java File類常見用法總結

Java中的File類是“文件和目錄路徑名的抽象表示形式”,其中提供了很多方法以實現對文件和文件夾的操作。下面總結了File類一些常見的用法,希望對大家有幫助。

文件(夾)的創建與刪除

boolean createNewFile( )——創建新的文件
boolean mkdir( )——創建單級文件夾
boolean mkdirs( )——創建多級文件夾
如果需要創建的文件位於某個文件夾內,則需要先創建文件夾,再創建文件。另外,不能創建已經存在的文件和文件夾。

boolean delete()——可以刪除文件和文件夾,但只能刪除空文件夾,所以刪除文件夾前,要先刪除文件夾內的文件。該方法將直接刪除文件,刪除的文件不會在回收站中。

代碼如下:

import java.io.File;
import java.io.IOException;

public class FileTest {
    public static void main(String[] args) throws Exception {
        File folder = new File("E:\\fileTest\\folder");
        File file1 = new File(folder,"file1.txt");

//     創建文件和文件夾
        try {
        // 有時候也將這些語句放入輸出語句中,以查看操作是否成功
        // 如:System.out.println(folder.mkdirs());
            folder.mkdirs();  //先創建文件夾
            file1.createNewFile();  // 再創建文件    
        } catch (IOException e) {
            System.out.println("創建文件時出錯!");
        }   

//      刪除文件和文件夾
        file1.delete(); // 先刪除文件夾內的文件
        folder.delete(); // 再刪除文件夾
    }
}

另外,結合遞歸,delete方法也可用於多級文件夾的刪除。如下:

// 爲了閱讀直觀,以下代碼被封裝在方法中

private void deleteFolders(File srcFile) {
    File[] files = srcFile.listFiles();

    // 判斷源文件夾下的File對象是文件還是文件夾
    for(File file : files) {
        // 是文件夾,繼續調用方法本身,且該文件夾的File對象是srcFile
        if(file.isDirectory()) {
            deleteFolders(file);
        } else {
            // 是文件,直接刪除
            file.delete();
        }

        // 以上步驟刪除了所有文件,接着繼續刪除文件夾
        file.delete();
    }

    // 最後刪除最外層的文件夾
    srcFile.delete();
}   

文件(夾)屬性查看

String getAbsolutePath( )——獲取絕對路徑
String getPath( )——獲取相對路徑
String getName( )——獲取文件名
long length( )——獲取文件大小
long lastModified( )——獲取上一次修改時間,以判斷文件是否被修改
boolean isDirectory( )——判讀File對象是否爲文件夾
boolean isFile( )——判斷File對象是否爲文件
boolean canRead( )——判斷File對象表示的文件是否可讀
boolean canWrite( )——判斷File對象表示的文件是否可寫
boolean isHidden( )——判斷文件是否隱藏
boolean exits( )——判斷文件(夾)是否存在

這些方法很少單獨使用,一般都會其他方法一起使用。此外,File類還提供了文件重命名的方法:
boolean renameTo(File dest)——重命名文件至目標文件夾下。
值得注意的是:dest表示的路徑與原路徑不同,將剪切原文件並重命名(其實,方法名已經很形象地說了這一點)。另外,如果目標文件夾下已存在同名文件,將不會重命名。具體如下:

import java.io.File;
import java.io.IOException;

public class FileTest2 {
    public static void main(String[] args) {
        String oldName = "theOld.txt"; // 文件的原名
        String newName = "theNew.txt";// 文件的新名

        //創建原文件夾和原文件的File對象
        File srcFolder = new File("E:\\src");
        File srcFile1 = new File(srcFolder,"srcFile1.txt");
        File srcFile2 = new File(srcFolder,"srcFile2.txt");

        // 創建新文夾的File對象
        File newFolder = new File("E:\\dest");

        //  創建原文件夾、原文件、新文件夾 
        try {
            srcFolder.mkdir();
            srcFile1.createNewFile();
            srcFile2.createNewFile();
            newFolder.mkdir();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 重命名的目標文件夾和原文件夾相同---重命名
        srcFile1.renameTo(new File(srcFolder,newName));

        // 重命名的目標文件夾和原文件夾不同----剪切+重命名 
        srcFile2.renameTo(new File(newFolder,newName));
    }

}

文件(夾)列表

public String[] list( )——獲取某個目錄下文件(夾)名的數組
public File[] listFiles( )——獲取某個目錄下文件(夾)名的File對象數組
public File[] listFiles(FileFilter filter) ——獲取某個目錄下滿足一定條件的文件(夾)名對象數組,可用與查找特定的文件,如獲取文件夾下所有的txt文件,具體如下:

import java.io.File;
import java.io.FileFilter;

public class FileTest3 {
    public static void main(String[] args) {
        File file = new File("E:\\test");

        File[] txtFiles = file.listFiles(new FileFilter(){
            // 使用匿名類創建FileFilter的實現類對象 
            //並重寫FileFilter接口中的accept方法
            public boolean accept(File pathname) {
                // 這裏的判斷條件爲 名字以“.txt”結尾
                return pathname.getName().endsWith(".txt");
            }
        });

        // 遍歷數組,輸出所有txt文件 的文件名
        for(File f : txtFiles){
            System.out.println(f.getName());
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章