Java是一種廣泛使用的編程語言,在文件操作方面也有很多優秀的實現。本文將從多個方面介紹Java如何獲取目錄下所有文件名,並給出對應的代碼示例。
一、使用File類自帶的方法獲取文件名
Java中,可以使用File類提供的list方法獲取指定目錄下的所有文件和文件夾的名稱。代碼示例如下:
File dir = new File("C:\\test"); if(dir.isDirectory()){ String[] children = dir.list(); if(children == null){ System.out.println("該目錄沒有任何文件或文件夾"); }else{ for(int i = 0; i < children.length; i++){ System.out.println(children[i]); } } }else{ System.out.println("指定路徑不是一個合法的目錄"); }
以上代碼首先創建了一個File對象來表示目錄路徑,然後判斷該路徑是否為目錄。如果是,調用File類的list方法獲得該目錄下的所有文件和文件夾的名稱,並在控制台輸出。如果不是目錄,則會提示指定路徑不合法。
需要注意的是,使用list方法只能獲取文件名,無法獲取文件的詳細信息。
二、遞歸方式獲取文件名
遞歸是一種常用的演算法,可以用來查找、排序、枚舉等操作。使用遞歸方法可以獲取指定目錄下的所有文件和文件夾的名稱,並且可以遞歸遍歷子目錄下的文件。代碼示例如下:
public static void listAllFiles(File dir){ if(dir.isDirectory()){ File[] children = dir.listFiles(); if(children == null){ System.out.println("該目錄沒有任何文件或文件夾"); }else{ for(int i = 0; i < children.length; i++){ listAllFiles(children[i]); } } }else{ System.out.println(dir.getName()); } }
以上代碼中,定義了一個listAllFiles方法,該方法接收一個File類型的參數,用於表示目錄路徑。首先判斷該路徑是否為目錄,如果是,則調用listFiles方法獲取該目錄下所有的文件和文件夾,然後遞歸遍歷每個子目錄下的文件和文件夾。如果該路徑不是目錄,則直接輸出文件名。
三、獲取指定後綴名的文件名
有時候,需要獲取指定後綴名的所有文件名。可以使用FilenameFilter介面實現該功能。代碼示例如下:
public static void listAllFiles(File dir, String suffix){ if(dir.isDirectory()){ File[] children = dir.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith(suffix); } }); if(children == null){ System.out.println("該目錄沒有任何符合條件的文件"); }else{ for(int i = 0; i < children.length; i++){ System.out.println(children[i].getName()); } } }else{ System.out.println("指定路徑不是一個合法的目錄"); } }
以上代碼中,定義了一個listAllFiles方法,該方法接收兩個參數,一個是File類型的目錄路徑,另一個是String類型的後綴名。首先判斷該路徑是否為目錄,如果是,則調用listFiles方法並使用一個匿名內部類實現了FilenameFilter介面,重寫其中的accept方法,使其只接受符合後綴名的文件。最後輸出文件名。如果該路徑不是目錄,則提示不合法路徑。
四、獲取文件的詳細信息
獲取文件的詳細信息包括文件名、文件大小、文件類型、文件路徑、最後修改時間等。可以使用Java提供的NIO(New I/O)包中的Files類實現這個功能。代碼示例如下:
public static void getFileInfo(String filePath){ Path path = Paths.get(filePath); try{ BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class); System.out.println("文件名:" + path.getFileName()); System.out.println("文件大小:" + attrs.size() + "位元組"); System.out.println("文件類型:" + Files.probeContentType(path)); System.out.println("文件路徑:" + path.toAbsolutePath()); System.out.println("最後修改時間:" + attrs.lastModifiedTime()); }catch(IOException e){ System.out.println("無法讀取指定文件的屬性"); } }
以上代碼中,定義了一個getFileInfo方法,該方法接收一個String類型的文件路徑為參數。使用Java NIO的Path類首先表示該文件路徑,然後使用Files類的readAttributes方法獲取該文件的BasicFileAttributes屬性。最後,輸出文件名、文件大小、文件類型、文件路徑和最後修改時間。如果無法讀取指定文件的屬性,則提示錯誤信息。
五、使用Lambda表達式實現獲取文件名
在Java 8之後,可以使用Lambda表達式來簡化文件操作。代碼示例如下:
File dir = new File("C:\\test"); if(dir.isDirectory()){ Arrays.asList(dir.listFiles()) .stream() .forEach(file -> System.out.println(file.getName())); }else{ System.out.println("指定路徑不是一個合法的目錄"); }
以上代碼中,首先創建一個File對象來表示目錄路徑,然後判斷該路徑是否為目錄。如果是,則使用Arrays.asList方法將獲取到的文件數組轉換成一個List;接著使用stream方法將該List轉換為一個流,然後調用forEach方法,使用Lambda表達式輸出文件名。如果該路徑不是目錄,則提示不合法路徑。
六、小結
本文介紹了幾種Java獲取目錄下所有文件名的方法,並給出對應的代碼示例。通過這些方法,可以方便地獲取目錄下的所有文件名,並且可以獲取文件的詳細信息。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/282540.html