0
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)并将这些过滤的文件移动到它自己的文件夹中?

4

3 回答 3

1

File提供在开始生成文件列表时对其进行过滤的能力。

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

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

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

于 2013-08-21T23:31:38.430 回答
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);
    }
}

有关内容列表和目录过滤的更多信息,请访问NIO.2 中的列表和过滤目录内容

于 2014-01-20T07:55:32.730 回答
0
if(ext.endWith(".mp3")){
 //do what ever you want 
}
于 2013-08-21T23:26:42.983 回答