Не удаляются файлы, которые принимают условие (рекурсия) - PullRequest
0 голосов
/ 30 июня 2019

Что не так с этим кодом, я хочу рекурсивно прочитать все файлы в папке, чтобы проверить, содержат ли они определенное слово, и проверить, доступны ли для записи записи, если они принимают это условие, я хочу удалить их.

public void del(String text) throws IOException {
    if (UtilityClass.isEmpty(text)) {
        throw new IOException("Teksti null");
    }
    int count = del(folder, text);

    try (FileWriter fw = new FileWriter("C://Users//Admin//Desktop//deletewriteout")) {

        fw.write(
                "Ne totalin u fshine : " + count + " file-a te cilet ishin te shkrushem dhe qe permabin : " + text);
        fw.flush();
    }
}

private int del(File file, String text) throws IOException {
    int counter = 0;
    String line = null;
    File[] fajllat = file.listFiles((File f) -> f.isFile() && f.canRead());
    for (File f : fajllat) {
        FileReader fr = new FileReader(f);
        BufferedReader br = new BufferedReader(fr);
        while ((line = br.readLine()) != null) {
            if (line.contains(text)) {
                f.delete();
                counter++;
            }

            else if (f.isDirectory()) {
                counter += del(f, text);
            }

        }
    }
    return counter;
}

1 Ответ

0 голосов
/ 01 июля 2019

Вам необходимо закрыть входной поток перед удалением файла.

private int del(File file, String text) throws IOException {
    int counter = 0;
    String line = null;
    File[] fajllat = file.listFiles((File f) -> f.isFile() && f.canRead());
    for (File f : fajllat) {
        FileReader fr = new FileReader(f);
        BufferedReader br = new BufferedReader(fr);
        while ((line = br.readLine()) != null) {
            if (line.contains(text)) {

                // => Added
                br.close();// We need to close read stream before delete


                f.delete();
                counter++;
            }

            else if (f.isDirectory()) {
                counter += del(f, text);
            }

        }
    }
    return counter;
}

См. здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...