Страницы

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

воскресенье, 5 января 2020 г.

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

#файлы #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()

Но я не могу понять, что передавать ему в качестве аргументов, и сработает ли, если
на входе у нас имя файла а не файл?
 Вобщем, я совсем запуталась и очень жду помощи!    


Ответы

Ответ 1



Рискну предположить, что под сортировкой вы имели ввиду фильтрацию - т.е. переместить только те файлы, в именах которых содержится указанная строка 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.

Ответ 2



Проверь этот код! Я сам писал. В этом коде сначала renameTo - перемещает папку в другой каталог и потом отсортирует, то есть удаляет ненужные файлы из папки после перемещения. import java.io.File; import java.io.IOException; public class File_remove { private static String to = ""; public static void main(String[] args) throws IOException { String from = "c:/from"; to = "c:/to"; File From = new File(from); if (!From.exists()) { System.out.println(to + " does not exist!"); return; } File To = new File(to); if (!To.delete()){ System.out.println("You can't move!"); return; } From.renameTo(To); Check(To.list(), "inputFilterName"); } public static void Check(String[] arr, String inpFilterName) { for (int i = 0; i < arr.length; i++) { if (arr[i].indexOf(inpFilterName) < 0){ if (!(new File(to + File.separator + arr[i]).delete())){ System.out.println("You can't delete the file!"); } } } } }

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

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