2013-08-21 3 views
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); 



    } 
} 

} 

}Фильтрация файлов в каталоге в Java

Я пытаюсь отфильтровать только .mp3 в моей программе. Я, очевидно, новичок и попытался скопировать некоторые вещи с Google и на этот сайт. Как установить каталог (sourceDir) и перенести те отфильтрованные файлы в его собственную папку?

+0

Вы смотрели на предложенное решение здесь: [Http://stackoverflow.com/questions/1146153/copying-files-from-one-directory-to-another-in-java] или здесь: [http://stackoverflow.com/questions/5758268/java-move-file-with -certain-file-extension]? –

+0

1) Используйте последовательный и логический отступ для кодовых блоков. Отступ кода предназначен для того, чтобы помочь людям понять поток программы. 2) Чтобы получить более эффективную помощь, опубликуйте [SSCCE] (http://sscce.org/) (который не использует сторонние API, такие как 'FileUtils'). 3) Посмотрите на '' File.listFiles (FilenameFilter) '] (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#listFiles%28java.io.FilenameFilter%29) для фильтрации файлов '.mp3' от остальных. 4) Заголовок сообщения не соответствует этому вопросу. Не могли бы вы изменить один или другой? –

ответ

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

предоставляет возможность фильтровать список файлов по мере его создания.

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

Теперь это имеет ряд преимуществ, главные из которых является то вам не нужна постобработка списка, еще раз или два списка в памяти одновременно.

Он также обеспечивает возможность подключения. Например, вы можете создать класс MP3FileFilter и повторно использовать его.

+0

Вообще говоря, 'listFiles' возвращает все файлы в каталоге? –

+0

@JoshM Вообще говоря, 'listFiles' должен перебирать все файлы в каталоге любым способом генерации списка. «FileFilter» позволяет методу отбрасывать те файлы, которые вы не хотите, и возвращать только те, которые вы делаете. Это означает, что вам не нужно дважды обрабатывать список ... – MadProgrammer

1

Я нахожу подход 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

Смежные вопросы