在目录中搜索wav文件

时间:2011-03-17 11:05:33

标签: java file-io

如果存在wav文件,我想在目录中搜索。

我怎么能在java中做到这一点?

谢谢。

5 个答案:

答案 0 :(得分:4)

如果您使用此:

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

答案 1 :(得分:2)

使用File课程。它可以告诉你它是一个目录并给出一个文件列表。然后,您将能够使用File.getName()方法分析扩展程序。

答案 2 :(得分:1)

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);

答案 3 :(得分:1)

使用递归显示目录中更深的文件以及指定文件类型的位置(用于可重用性)。

// 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);
                }
            }

    }

答案 4 :(得分:0)

您可能想为此特定扩展程序创建文件过滤器。

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"));