我不希望将这么多文件从android assets
目录复制到我的 app的内部存储。这就是为什么我在zip
文件夹中创建了一个assets
文件,我会将zip
文件复制到我的 android应用程序的内部存储器中。复制之后,我在同一位置提取/解压缩,提取完成后,我将删除此zip
文件。
这样做的目的是消除复制这么多文件的开销。另外,在复制这么多文件时,我得到IOException
一些文件类型。这又是一种阻碍。这就是为什么我试图这样做,正如我上面所讨论的那样。 但问题是我如何提取驻留在应用内部存储中的zip文件。我想在同一个位置(App的内部存储)中提取它。我怎样才能做到这一点?
感谢任何帮助或代码.. !!!
答案 0 :(得分:1)
您可以使用此source:
中的代码提取zip文件import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import android.util.Log;
public class UnzipUtil
{
private String zipFile;
private String location;
public UnzipUtil(String zipFile, String location)
{
this.zipFile = zipFile;
this.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.v("Decompress", "Unzipping " + ze.getName());
if(ze.isDirectory())
{
dirChecker(ze.getName());
}
else
{
FileOutputStream fout =
new FileOutputStream(location + ze.getName());
byte[] buffer = new byte[8192];
int len;
while ((len = zin.read(buffer)) != -1)
{
fout.write(buffer, 0, len);
}
fout.close();
zin.closeEntry();
}
}
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();
}
}
}
在AndroidManifest.xml中提供写入外部存储空间权限