日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android unzip file,Unzip File in Android Assets

發布時間:2023/12/10 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android unzip file,Unzip File in Android Assets 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

可以將文章內容翻譯成中文,廣告屏蔽插件可能會導致該功能失效(如失效,請關閉廣告屏蔽插件后再試):

問題:

I put a zip file in the android assets. How do i extract the file in the android internal storage? I know how to get the file, but i don't know how to extract it. This is my code..

Util zip ;

zip = new Util();

zip.copyFileFromAsset(this, "myfile.zip", getExternalStorage()+

"/android/data/edu.binus.profile/");

Thanks for helping :D

回答1:

This piece of code will help you....Just pass the zipfile location and the location where you want the extracted files to be saved to this class while making an object...and call unzip method...

public class Decompress {

private String zip;

private String loc;

public Decompress(String zipFile, String location) {

zip = zipFile;

loc = location;

dirChecker("");

}

public void unzip() {

try {

FileInputStream fin = new FileInputStream(zip);

ZipInputStream zin = new ZipInputStream(fin);

ZipEntry ze = null;

while ((ze = zin.getNextEntry()) != null) {

Log.v("Decompress", "Unzipping " + ze.getName());

if(ze.isDirectory()) {

dirChecker(ze.getName());

} else {

FileOutputStream fout = new FileOutputStream(loc + 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();

}

}

}

回答2:

Based on Sreedev R solution,

I added the option to read the file from assets and use buffer:

package com.pixoneye.api.utils;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.zip.ZipEntry;

import java.util.zip.ZipInputStream;

import android.content.Context;

import android.util.Log;

public class Decompress {

private static final int BUFFER_SIZE = 1024 * 10;

private static final String TAG = "Decompress";

public static void unzipFromAssets(Context context, String zipFile, String destination) {

try {

if (destination == null || destination.length() == 0)

destination = context.getFilesDir().getAbsolutePath();

InputStream stream = context.getAssets().open(zipFile);

unzip(stream, destination);

} catch (IOException e) {

e.printStackTrace();

}

}

public static void unzip(String zipFile, String location) {

try {

FileInputStream fin = new FileInputStream(zipFile);

unzip(fin, location);

} catch (FileNotFoundException e) {

e.printStackTrace();

}

}

public static void unzip(InputStream stream, String destination) {

dirChecker(destination, "");

byte[] buffer = new byte[BUFFER_SIZE];

try {

ZipInputStream zin = new ZipInputStream(stream);

ZipEntry ze = null;

while ((ze = zin.getNextEntry()) != null) {

Log.v(TAG, "Unzipping " + ze.getName());

if (ze.isDirectory()) {

dirChecker(destination, ze.getName());

} else {

File f = new File(destination, ze.getName());

if (!f.exists()) {

boolean success = f.createNewFile();

if (!success) {

Log.w(TAG, "Failed to create file " + f.getName());

continue;

}

FileOutputStream fout = new FileOutputStream(f);

int count;

while ((count = zin.read(buffer)) != -1) {

fout.write(buffer, 0, count);

}

zin.closeEntry();

fout.close();

}

}

}

zin.close();

} catch (Exception e) {

Log.e(TAG, "unzip", e);

}

}

private static void dirChecker(String destination, String dir) {

File f = new File(destination, dir);

if (!f.isDirectory()) {

boolean success = f.mkdirs();

if (!success) {

Log.w(TAG, "Failed to create folder " + f.getName());

}

}

}

}

回答3:

Maybe you should try using a FileOutputStream in combination with an inputstream from the zip file. With a package file, this should work.

To quote @wordy from this question:

PackageManager pm = context.getPackageManager();

String apkFile = pm.getApplicationInfo(context.getPackageName(), 0).sourceDir;

ZipFile zipFile = new ZipFile(apkFile);

ZipEntry entry = zipFile.getEntry("assets/FILENAME");

myInput = zipFile.getInputStream(entry);

myOutput = new FileOutputStream(file);

byte[] buffer = new byte[1024*4];

int length;

int total = 0;

int counter = 1;

while ((length = myInput.read(buffer)) > 0) {

total += length;

counter++;

if (counter % 32 == 0) {

publishProgress(total);

}

myOutput.write(buffer, 0, length);

}

Looks like there may be problems with ProGuard but hopefully the code sample works for you.

回答4:

I haven't tested yet,but while doing a project on OCR I came across this library,where there is method of unzipping a downloaded file from the net. The exact method for unzipping file is installZipFromAssets(String sourceFilename,File destinationDir,File destinationFile) found under this class.Hope this is what you are looking for

回答5:

You can also make use of the zip4j external library that provides additional features like encryption. Also, it has functions to extract files to a particular location provided the path.

總結

以上是生活随笔為你收集整理的android unzip file,Unzip File in Android Assets的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。