Удалить ZIP-файл после распаковки в Java - PullRequest
3 голосов
/ 07 марта 2011

Как удалить zip-файл в java?Метод file.delete возвращает false.Почему?

File file = new File("/mibook/"+mFilename+"/"+mZipname.toString());
boolean deleted = file.delete();

edit:
Правило "Директория должна быть очищена до удаления .." применимо к zip-файлу?

Код разархивирования моего файла


   public void unzip() throws IOException { 
        FileInputStream fin=null;
        ZipInputStream zin=null;
        File file =null;
        ZipEntry ze ;
        FileOutputStream fout=null;
        try{ 
            System.out.println(_zipFile );
            System.out.println(_location);
            fin = new FileInputStream(_zipFile); 
            zin = new ZipInputStream(fin); 
            ze= null; 
            byte[] buffer = new byte[1024];
            int length;
            while ((ze = zin.getNextEntry()) != null) { 
                file = new File((_location +"/" + ze.getName()));
                file.getParentFile().mkdirs();
                 fout= new FileOutputStream(_location + ze.getName()); 
                while ((length = zin.read(buffer))>0) {
                    fout.write(buffer, 0, length);
                }
                zin.closeEntry(); 
                fout.close();<br>
            }
            zin.close(); 
        }catch(Exception e) { 
            Log.e("Decompress", "unzip", e); 
        }<br>
        finally {</p>

<pre><code>            fin.close();
            zin.close();
            fout.close();


    }

} 

Ответы [ 4 ]

6 голосов
/ 05 декабря 2011

Вы должны убедиться, что закрыли свой ZipFile.

Например, у меня было:

ZipFile zFile = new ZipFile("blah");
//lots-o-code
zFile.close();
File file = new File("blah");
file.delete();
5 голосов
/ 07 марта 2011

Если file.delete() возвращает false, то я предполагаю, что у другого процесса открыт zip-файл - или, возможно, даже у вашего собственного процесса.

  • Убедитесь, что путь указан правильно, напримерчто возвращает file.exists()?
  • Убедитесь, что у вас есть разрешение на удаление файла, когда пользователь запускает ваше приложение
  • Убедитесь, что у вас нет открытого дескриптора файла внутриваш код (например, вы только что прочитали его и не закрыли поток ввода?)
  • Убедитесь, что у вас нет файла, открытого в настольном приложении
0 голосов
/ 22 апреля 2016

Использование: FileUtils.delete(yourFile);

Это исправило мою проблему

0 голосов
/ 07 марта 2011

Это очень часто при попытке удалить файл, который вы создали. Обязательно close FileWriter, который вы использовали для создания разархивированного файла.

Если вы не можете определить, где закрыть файл, лучше всего позвонить по номеру file.deleteOnExit(), что должно быть успешно, даже если вы случайно оставите несколько открытых файловых ручек.

...