2013-12-13 2 views
1

У меня есть каталог с несколькими файлами. Мне нужно получить только имена файлов XML в списке с использованием Java. Как я могу это сделать?Извлечь все имена файлов XML из каталога с помощью JAVA

+1

Не могли бы вы показать, что вы пробовали. Некоторый код, пожалуйста. –

+1

Смотрите следующее: http://stackoverflow.com/questions/5751335/using-file-listfiles-with-filenameextensionfilter – Nishan

ответ

2

Попробуйте [FilePath это путь к каталогу !!]

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 добавить инструкцию OR, если инструкция работает нормально .. !! – 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 */ 
    } 
} 
Смежные вопросы