2013-12-23 2 views
-1

Я хочу разархивировать zip-файл на android. Я искал и нашел этот код; Я попытался реализовать его без успеха. Кто-нибудь сможет мне объяснить, почему? Кажется, я не могу найти проблему.Unzip файл не работает

Я копирую файл main.zip на SD-карте, но после запуска программы я не могу найти папку unzipFile на SD-карте. Почему такое поведение происходит?

И еще, если я хочу распаковать файл папки с ресурсами, как я могу получить путь к этому файлу в актив и сохранить этот путь в переменной String? Благодарю.

public class Decompress { 
    private String _zipFile; 
    private String _location; 

    public Decompress(String zipFile, String location) { 
    _zipFile = zipFile; 
    _location = location; 

    _dirChecker(""); 
    } 

    public void unzip() { 
    try { 
     FileInputStream fin = new FileInputStream(_zipFile); 
     ZipInputStream zin = new ZipInputStream(fin); 
     ZipEntry ze = null; 
     while ((ze = zin.getNextEntry()) != null) { 
     Log.e("Decompress", "Unzipping " + ze.getName()); 

     if(ze.isDirectory()) { 
      _dirChecker(ze.getName()); 
     } else { 
      FileOutputStream fout = new FileOutputStream(_location + ze.getName()); 
      for (int c = zin.read(); c != -1; c = zin.read()) { 
      fout.write(c); 
      } 

      zin.closeEntry(); 
      fout.close(); 
     } 

     } 
     zin.close(); 
    } catch(Exception e) { 
     Log.e("Decompress", "unzip", e); 
    } 

    } 

    private void _dirChecker(String dir) { 
    File f = new File(_location + dir); 

    if(!f.isDirectory()) { 
     f.mkdirs(); 
    } 
    } 
} 

main.java:

public class UnZipFile extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Log.e("he", "heee"); 
    Toast.makeText(this, "in activity", Toast.LENGTH_LONG).show(); 
    String zipFile = Environment.getExternalStorageDirectory() 
      + "/main.zip";// "file:///android_asset/main.zip"; 
    String unzipLocation = Environment.getExternalStorageDirectory() 
      + "/unzipFile/"; 
    Decompress d = new Decompress(zipFile, unzipLocation); 
    d.unzip(); 

} 
} 

manifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
+0

Рассмотрите возможность перезаписи 'И еще, если я хочу распаковать файл папки с ресурсами, как я могу получить путь к этому файлу в свойстве и сохранить этот путь в переменной String?'. Чрезвычайно трудно понять. –

+0

Вопросы с основным сообщением: «Я пытался использовать этот код, вот он и почему он не работает для меня?»: Нужно безжалостно замещать, закрывать и удалять модераторы. Не спасен. Не говорите: «Это не работает». Эти типы вопросов вредят stackoverflow, наполняя его вздором: «Вот копия вставки кода, почему это не работает для меня? Это бесит, потому что существует бесконечное число причин, почему это может быть. Мы не здесь чтобы рассказать нам, что вы сделали, рассказать нам, что вы ожидали, а затем рассказать нам, что у вас есть. –

+0

Мой вопрос ясен, The Playtypus, я имею в виду, я есть zip-файл в папке с ресурсами, и я хочу получить доступ к этому файлу для распаковки. Как я могу получить путь к этому файлу папки с ресурсами? Является ли это ясным или нет? Спасибо всем :) – user2982082

ответ

0

Может быть, вы не можете получить доступ к SD-карта. Вы проверяете это, создаете файл и проверяете наличие этого.

+0

О, это правда, я должен удалить доступ к памяти моего телефона, а затем я пытаюсь получить доступ к SD-карте с моим приложением. Спасибо. Знаете ли вы, как я могу получить доступ к zip-файлу папки с ресурсами и разархивировать это? – user2982082

Смежные вопросы