如果存在wav文件,我想在目录中搜索。
我怎么能在java中做到这一点?
谢谢。
答案 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"));