Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Метод не удаляет файлы / 9 сообщений из 9, страница 1 из 1
15.03.2013, 19:27:30
    #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
15.03.2013, 20:02:57
    #38186257
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод не удаляет файлы
Тут что-то с потоками видимо? Читаю. Но помощь все еще нужна.
...
Рейтинг: 0 / 0
15.03.2013, 20:08:52
    #38186261
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод не удаляет файлы
Даже если между методами FldArch.zipFolder и FldCln.CleanFolder сделать задержку (Thread.sleep(20000)), то все равно папка не очищается =(.
...
Рейтинг: 0 / 0
15.03.2013, 20:33:48
    #38186285
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод не удаляет файлы
используйте try with resources. По-моему вы банально закрываете IO стримы, из-за чего на файлах висят блокировки, которые не дают их удалить.
Прежде чем писать что файл удален, хорошо бы проверить что вернул метод delete()
...
Рейтинг: 0 / 0
16.03.2013, 09:30:33
    #38186537
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод не удаляет файлы
Blazkowicz,

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

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

Blazkowiczхорошо бы проверить что вернул метод delete()
мне стыдно, но я не знаю как =(.
...
Рейтинг: 0 / 0
16.03.2013, 13:19:54
    #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
16.03.2013, 20:19:20
    #38186882
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод не удаляет файлы
logger.debug(...)
...
Рейтинг: 0 / 0
17.03.2013, 17:00:03
    #38187247
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод не удаляет файлы
спасибо. поковыряюсь, но может ещё задам несколько поражающих воображение вопросов.
...
Рейтинг: 0 / 0
18.03.2013, 12:14:45
    #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
Форумы / Java [игнор отключен] [закрыт для гостей] / Метод не удаляет файлы / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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