2011-09-21 74 views
1

我想一次將多個文件讀取到Java中。文件名是這樣的:在Java中讀取多個文件

  • nnnnn_UM2012.txt
  • ghkjdf_UM2045.txt
  • erey_UM2189.txt
  • ....

有超過1000個文件,我不希望使用類似於以下代碼的Java代碼逐個寫入所有文件名:

String fileNames = {"nnnnn_UM2012.txt","ghkjdf_UM2045.txt","erey_UM2189.txt", …} 

也許文件名應該以相反的順序讀取。我怎樣才能做到這一點?

+0

下面的答案顯示如何獲取文件夾中的所有文件名。如果您有關於撤銷訂單的問題,請澄清。 –

回答

4

您可以使用listFiles方法獲取文件夾中的所有文件。

0
File rep = new File("path to rep"); 
File[] list = rep.listFiles(); 
ArrayList<String> filenames = new ArrayList<String>(); 
for (int i = 0; i < list.length; i++) { 
    filenames.add(list[i].getName()); 
} 

我想這可以解決您的問題。

+2

更好地寫成'Arrays.asList(rep.listFiles());'成爲'asList(rep.listFiles());'帶有靜態導入。 –

3

爲了得到一個文件夾中的所有文件(子文件夾都包含在文件列表):

// get all files in the folder 
    final File folder = new File("."); 
    final List<File> fileList = Arrays.asList(folder.listFiles()); 

要獲得所有文件的文件夾中,不包括子文件夾:

// get all files in the folder excluding sub-folders 
    final File folder = new File("."); 
    final List<File> fileList = Arrays.asList(folder.listFiles(new FileFilter() { 
     public boolean accept(File pathname) { 
      return pathname.isFile(); 
     } 
    })); 

要將文件的列表進行排序逆轉區分大小寫的順序:

// sort the files into reverse order 
    Collections.sort(fileList, new Comparator<File>() { 
     public int compare(File o1, File o2) { 
      return o2.getName().compareTo(o1.getName()); 
     } 
    }); 

要排序的文件列表進入反C ASE不敏感的順序:

// sort the files into reverse order ignoring case 
    Collections.sort(fileList, new Comparator<File>() { 
     public int compare(File o1, File o2) { 
      return o2.getName().compareToIgnoreCase(o1.getName()); 
     } 
    }); 
0

你可以按照下面的方法,如果所有的文件都在一個目錄中。 通過提供完全合格的路徑來獲取目錄的引用,然後使用list()函數將所有文件名稱存入目錄中的String數組。

完成此步驟後,您可以根據自己想要的方式對文件進行排序(例如按照名稱,長度等)。