使用Java过滤目录中的文件

时间:2013-08-21 23:16:09

标签: java file filter

public class Sorter {
String dir1 = ("C:/Users/Drew/Desktop/test");
String dir2 = ("C:/Users/Drew/Desktop/");

public void SortingAlgo() throws IOException {

// Declare files for moving
File sourceDir = new File(dir1);
File destDir = new File(dir2);

//Get files, list them, grab only mp3 out of the pack, and sort

File[] listOfFiles = sourceDir.listFiles();

if(sourceDir.isDirectory()) {

for(int i = 0; i < listOfFiles.length; i++) {

    //list Files
    System.out.println(listOfFiles[i]);

    String ext = FilenameUtils.getExtension(dir1);
    System.out.println(ext);



    }
}

}

}

我想在我的程序中仅过滤掉.mp3。我显然是初学者,并尝试从谷歌和本网站上复制一些东西。如何设置目录(sourceDir)并将这些过滤后的文件移动到自己的文件夹中?

3 个答案:

答案 0 :(得分:1)

我发现使用GLOB的NIO.2方法或自定义过滤最干净的解决方案。查看此示例,了解如何在附加链接中使用GLOB或过滤器示例:

Path directoryPath = Paths.get("C:", "Program Files/Java/jdk1.7.0_40/src/java/nio/file");

if (Files.isDirectory(directoryPath)) {
    try (DirectoryStream<Path> stream = Files.newDirectoryStream(directoryPath, "*.mp3")) {
        for (Path path : stream) {
            System.out.println(path);
        }
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

有关内容列表和目录过滤的详细信息,请访问Listing and filtering directory contents in NIO.2

答案 1 :(得分:0)

if(ext.endWith(".mp3")){
 //do what ever you want 
}

答案 2 :(得分:0)

File提供了在文件列表开始生成时过滤文件列表的功能。

File[] listOfFiles = sourceDir.listFiles(new FileFilter() {
    @Override
    public boolean accept(File pathname) {
        return pathname.getName().toLowerCase().endsWith(".mp3");
    }
});

现在,这有很多好处,其中最主要的是你不需要再次对列表进行后期处理,或者同时在内存中有两个列表。

它还提供可插拔功能。您可以创建一个MP3FileFilter类并重新使用它。