2010-06-22 1 views
1

попробовать {андроид проблемы в извлечении архива с помощью ZipFile

File f = new File("/data/cizip.zip"); 
if(f.exists()){ 
    ZipFile zf = new ZipFile(f); //this always throws an error 
/*some of my codes here*/ 
} 
catch(IOException e){ 
    AlertDialog.Builder abd = new AlertDialog.Builder(this); 
    abd.setMessage(e.getMessage()); 
    abd.show(); 
} 

линию ZipFile zf = new ZipFile(f); всегда выдает ошибку, и я не знаю, почему. И сообщение об ошибке - это имя файла ("/data/cizip.zip"), поэтому я не могу знать причину ошибки. Может кто-нибудь, пожалуйста, скажите мне, что вызывает эту ошибку? Заранее спасибо.

+0

если 'getMessage()' не возвращает достаточную информацию, вы можете захотеть более внимательно изучите исключение с помощью 'printStackTrace()' - например, и проверьте логарифм. – Joubarc

ответ

2

Это всего лишь предположение, но, возможно, файл используется (заблокирован)? Я не вижу ничего плохого в вашем коде ...

+0

ОК .. но что заставляет его заперты? Я не использую/не открываю его. Кстати, я просто использую эмулятор. – junmats

+1

согласился, не помешало бы проверить, может ли файл быть прочитан с помощью 'canRead()' в дополнение к 'exists()' – Joubarc

+0

@Joubarc: я выполнил ваше предложение и, положив условие canRead(), в результате получим false , Означает ли это, что он заблокирован? Но почему? Я не понимаю, почему мой zip-файл заблокирован, так как я его не использую. – junmats

0

У вашего приложения нет прав на чтение/запись непосредственно в каталоге/data /. Вы должны использовать правильную подпапку «/ data/data/your.program.package /» или просто «/ sdcard /»