Страницы

Поиск по вопросам

вторник, 5 февраля 2019 г.

Перемещение файлов java

Добрый вечер. 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.

Комментариев нет:

Отправить комментарий