繁体   English   中英

在目录WAV文件中搜索

[英]Search in a directory wav files

我想在目录中搜索wav文件是否存在。

如何在Java中做到这一点?

谢谢。

如果使用此:

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将包含以.wav结尾的File对象数组。 如果只想知道是否存在,请检查files.length > 0

使用File类。 它可以告诉您它是一个目录,并提供文件列表。 然后,您将能够使用File.getName()方法分析扩展名。

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

使用递归可以显示目录中更深的文件,并在其中指定哪种文件类型(可重用性)。

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

    }

您可能要为此特定扩展名创建文件过滤器。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM