Поиск в каталоге wav файлов - PullRequest
1 голос
/ 17 марта 2011

Я хотел бы искать в каталоге, если существуют файлы WAV.

Как я могу это сделать в Java?

Спасибо.

Ответы [ 5 ]

4 голосов
/ 17 марта 2011

Если вы используете это:

File dir = new File("/your/dir");
File[] files = dir.listFiles(new FilenameFilter() {
    public boolean accept(File dir, String name) {
        return name.toLowerCase().endsWith(".wav"); 
    }
});

Тогда files будет содержать массив File объектов, которые заканчиваются на .wav.Если вы просто хотите узнать, есть ли они, проверьте, если files.length > 0.

2 голосов
/ 17 марта 2011

Использовать Файл класс.Он может сказать вам, что это каталог и дать список файлов.Затем вы сможете проанализировать расширение, используя метод File.getName().

1 голос
/ 17 марта 2011

Использование рекурсии, которая показывает файлы глубже в каталоге и где вы указываете, какой тип файла (для повторного использования).

// This collection will contain all the file names
final Collection<File> fileCollection = new ArrayList<File>(); 

public void addDirectory(File dir, Collection<File> fileCollection, String fileType){

        if (fileType == null){
            fileType = "";
        }

        final File[] children = dir.listFiles();


            if (children != null){
                for(File child : children){

                    if (child.getName().endsWith(fileType)){
                        fileCollection.add(child);
                    }

                    addDirectory(child, fileCollection, fileType);
                }
            }

    }
1 голос
/ 17 марта 2011

Использовать FileFilter с File.list ()

FileFilter ff = java.io.FileFilter {
    public boolean accept(File f) {
    String name = f.getName().toLowerCase();
    return name.endsWith("wav")
}
dir.list(ff);
0 голосов
/ 17 марта 2011

Возможно, вы захотите создать файловый фильтр для этого конкретного расширения.

FileFilter wavFiter = new FileFilter(){ 

@Override
public boolean accept(File pathname) {
  return pathname.getPath().toLowerCase().endsWith("wav");
 }
}

или для любых других

class FileExtentionFilter implements FileFilter {

  private final String extenstion;

  FileExtenstionFilter(String extenstion) {
    this.extenstion = extenstion;
  }

  @Override
  public boolean accept(File pathname) {
 return pathname.getPath().toLowerCase().endsWith("wav");
 }
}

А потом используйте это так

File dir = new File(dirPath);
File[] waves = dir.listFiles(wavFiter);

или

File dir = new File(dirPath);
File[] waves = dir.listFiles(new FileExtentionFilter("wav"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...