Добрый вечер. 3 дня уже пытаюсь понять, как перемещать файлы в java. Есть задача: прочитать список файлов из указанного каталога, отсортировать по слову, вводимому с клавиатуры и переместить отсортированные файлы в указанный каталог.
Этот метод возвращает список файлов из каталога.
public static String[] getFilesList(File fl) {
String[] listFiles = fl.list();
for (int i = 0; i < listFiles.length; i++) {
}
return listFiles;
}
Далее реализована сортировка циклом:
for (int i = 0; i < arr.length; i++) {
if (arr[i].indexOf(inpFilterName) > 0)
И вот теперь самая большая проблема - в этом же цикле я хочу сразу перемещать файлы по указанному пути. Гугл подсказал, что необходимо использовать метод renameTo() класса File. Пыталась реализовать так:
File dir = new File();
dir.renameTo()
Но я не могу понять, что передавать ему в качестве аргументов, и сработает ли, если на входе у нас имя файла а не файл?
Вобщем, я совсем запуталась и очень жду помощи!
Ответ
Рискну предположить, что под сортировкой вы имели ввиду фильтрацию - т.е. переместить только те файлы, в именах которых содержится указанная строка inpFilterName. В таком случае можно поступить следующим образом: File destFolder = new File("output"); // это папка, в которую будем перемещать File[] files = fl.listFiles(); // получаем непосредственно файлы, не просто имена for (File file : files) { if (file.getName().indexOf(inpFilterName) != -1) { file.renameTo(new File(destFolder, file.getName())); } } Кстати, обратите внимание на разницу условий в if. Возможно, вы написали ровно то, что хотели, но на всякий случай: ваше условие выберет строки, в которых искомая подстрока стоит по индексу 1 или больше. Т.е. "test123".indexOf("test") это условие не пропустит. String#indexOf() возвращает -1 в случае неудачи, а не 0.
Комментариев нет:
Отправить комментарий