2013-12-13 39 views
1

我有一個包含多個文件的目錄。我需要僅使用Java檢索List中的XML文件名。我怎樣才能做到這一點?使用JAVA從目錄中檢索所有XML文件名

+1

您可以請顯示您的嘗試。一些代碼請。 –

+1

請參閱:http://stackoverflow.com/questions/5751335/using-file-listfiles-with-filenameextensionfilter – Nishan

回答

2

試試這個[文件路徑是目錄路徑!]

public static void main(String[] args) { 
File folder = new File("{FilePath}"); 
File[] listOfFiles = folder.listFiles(); 
for(int i = 0; i < listOfFiles.length; i++){ 
String filename = listOfFiles[i].getName(); 
if(filename.endsWith(".xml")||filename.endsWith(".XML")) 
{ 
System.out.println(filename); 
} 
    } 
    } 
} 
+0

謝謝。正常工作 – user3089869

+0

1)'filename.endsWith(「。xml」)'會丟失任何以.XML結尾的文件。 2)使用'FilenameFilter'! –

+0

@AndrewThompson:jus增加一個或聲明,如果聲明它工作正常..! – BlackPOP

1

您也可以使用的FilenameFilter:

import java.io.File; 
import java.io.FilenameFilter; 

public class FileDemo implements FilenameFilter { 
    String str; 

    // constructor takes string argument 
    public FileDemo(String ext) { 
     str = "." + ext; 
    } 

    // main method 
    public static void main(String[] args) { 

     File f = null; 
     String[] paths; 

     try { 
      // create new file 
      f = new File("c:/test"); 

      // create new filter 
      FilenameFilter filter = new FileDemo("xml"); 

      // array of files and directory 
      paths = f.list(filter); 

      // for each name in the path array 
      for (String path : paths) { 
       // prints filename and directory name 
       System.out.println(path); 
      } 
     } catch (Exception e) { 
      // if any error occurs 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    public boolean accept(File dir, String name) { 
     return name.toLowerCase().endsWith(str.toLowerCase()); 
    } 
} 
+0

我將'name.endsWith(str)'更改爲'name.toLowerCase()。endsWith(str.toLowerCase())',以說明所指定內容和所發現內容之間的不同情況。否則,+1不僅適用於正確的API,而且還是一個示例。尼斯。 :) –

0

您可以通過使用File.filter(的FilenameFilter)濾波器。提供您的FileNameFilter實施

0
File f = new File("C:\\"); 
if (f.isDirectory()){ 
    FilenameFilter filter = new FilenameFilter() { 
      @Override 
      public boolean accept(File dir, String name) { 
       if(name.endsWith(".xml")){ 
        return true; 
       } 
       return false; 
      } 
     }; 
    if (f.list(filter).length > 0){ 
     /* Do Something */ 
    } 
} 
相關問題