powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Метод не удаляет файлы
9 сообщений из 9, страница 1 из 1
Метод не удаляет файлы
    #38186227
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. Хороших выходных и зажигательной пятницы. Вообщем к тем кто еще не на танцульках прилетел чебаркульский метеорит код - "код" поведение которого мне пока непонятно и не предсказуемо. Для меня по крайней мере. Хлопок, который вы услышите, читая эти строки, - это звук лопнувшей моей головы.
В общем код:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
/*Архивируем файл*/
Fld_archivator FldArch = new Fld_archivator();
FldArch.zipFolder(vars.diskLetter + "//" + vars.prbFld + "//" + vars.prbBackUpFld,
vars.dDiskLetter + "//" + vars.backUpFileArchiveFLD + "//" + "backUp"+i+
FormCurTime.returnFormattedTime("yyyy_MM_dd_HH_mm_ss")+".zip");
 
System.out.println(FormCurTime.returnFormattedTime("yyyy.MM.dd HH.mm.ss.ms")  + " - папка BackUP заархвирована.");    
                             LW.writeToLog("Архивация папки BackUP завершена.");
/*Чистим папку*/
FolderCleaner FldCln = new FolderCleaner();
                            FldCln.CleanFolder(vars.diskLetter +"\\" + vars.prbFld + "\\" + vars.prbBackUpFld);




Проблема в том что папка не чиститься! Хотя отдельно, запустив FldCln.CleanFolder из Main (в отдельной программке), все отрабатывает корректно, т.е. папка очищается.
Складывается впечатление, что методы FldArch.zipFolder и FldCln.CleanFolder запускаются одновременно и тот метод, который шустрее (извините за примитивизм) не дает отработать корректно менее шустрому. Процесс как бы распараллеливается что-ли. Может я ошибаюсь.


Класс FldArch: http://pastebin.com/BTdP9aPb
Класс FldCln: http://pastebin.com/4vLXm712


Помогите, пожалуйста, удалить файлы методом FldCln предварительно заархивировав их методом FldArch. Спасибо.
...
Рейтинг: 0 / 0
Метод не удаляет файлы
    #38186257
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут что-то с потоками видимо? Читаю. Но помощь все еще нужна.
...
Рейтинг: 0 / 0
Метод не удаляет файлы
    #38186261
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже если между методами FldArch.zipFolder и FldCln.CleanFolder сделать задержку (Thread.sleep(20000)), то все равно папка не очищается =(.
...
Рейтинг: 0 / 0
Метод не удаляет файлы
    #38186285
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используйте try with resources. По-моему вы банально закрываете IO стримы, из-за чего на файлах висят блокировки, которые не дают их удалить.
Прежде чем писать что файл удален, хорошо бы проверить что вернул метод delete()
...
Рейтинг: 0 / 0
Метод не удаляет файлы
    #38186537
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

спасибо.
Т.е. всё что я несла про потоки не имеет отношение к проблеме?

Blazkowiczвы банально закрываете IO стримы, из-за чего на файлах висят блокировки,
думала что после закрытия IO стримов блокировки снимаются. ну мне не очевидно, что висят блокировки.

Blazkowiczхорошо бы проверить что вернул метод delete()
мне стыдно, но я не знаю как =(.
...
Рейтинг: 0 / 0
Метод не удаляет файлы
    #38186612
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May12думала что после закрытия IO стримов блокировки снимаются. ну мне не очевидно, что висят блокировки.

После закрытия блокировки снимаются. Только где у вас закрытие?

May12мне стыдно, но я не знаю как =(.
Код: java
1.
2.
3.
4.
5.
if(file.delete()){
   logger.info("File successfully removed " + file);
}else{
   throw new IOException("Failed to remove file " + file);
}
...
Рейтинг: 0 / 0
Метод не удаляет файлы
    #38186882
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
logger.debug(...)
...
Рейтинг: 0 / 0
Метод не удаляет файлы
    #38187247
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо. поковыряюсь, но может ещё задам несколько поражающих воображение вопросов.
...
Рейтинг: 0 / 0
Метод не удаляет файлы
    #38187794
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПосле закрытия блокировки снимаются. Только где у вас закрытие?

Добавила в метод in.close и все вроде заработало:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
  static private void addFileToZip(String path, String srcFile, ZipOutputStream zip)
      throws Exception {

    File folder = new File(srcFile);
    if (folder.isDirectory()) {
      addFolderToZip(path, srcFile, zip);
    } else 
     {
      byte[] buf = new byte[1024];
      int len;
      FileInputStream in = new FileInputStream(srcFile);
      zip.putNextEntry(new ZipEntry(path + "/" + folder.getName()));
      while ((len = in.read(buf)) > 0)
         {
        zip.write(buf, 0, len);
        }
     /*Пытаемся закрыть поток*/
      in.close(); 
     }
  }



Спасибо за советы. Добра вам и весны.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Метод не удаляет файлы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]