android assets解压,Android assets内压缩文件解压,解压到缓存示例
1.assets內壓縮文件解壓AssetsZipUtils,包含一個獲取文件夾下所有文件路徑的方法,方便獲取文件使用
public class AssetsZipUtils {
public static final String TAG = "ZIP";
/**
* 解壓assets目錄下的zip到指定的路徑
* @param zipFileString ZIP的名稱,壓縮包的名稱:xxx.zip
* @param outPathString 要解壓縮路徑
* @throws Exception
*/
public static void UnZipAssetsFolder(Context context, String zipFileString, String
outPathString) throws Exception {
Log.d("文件路徑", context.getAssets().open(zipFileString).toString());
ZipInputStream inPutZip = new ZipInputStream(context.getAssets().open(zipFileString));
ZipEntry zipEntry;
String szName = "";
while ((zipEntry = inPutZip.getNextEntry()) != null) {
Log.d("判斷文件是否存在",zipEntry.isDirectory()+"");
szName = zipEntry.getName();
if (zipEntry.isDirectory()) {
szName = szName.substring(0, szName.length() - 1);
File folder = new File(outPathString + File.separator + szName);
//目前判斷條件,如果包含解壓過的文件就不再解壓
if(!folder.exists()){
folder.mkdirs();
}else{
return;
}
} else {
Log.e(TAG, outPathString + File.separator + szName);
File file = new File(outPathString + File.separator + szName);
if (!file.exists()) {
Log.e(TAG, "Create the file:" + outPathString + File.separator + szName);
file.getParentFile().mkdirs();
file.createNewFile();
}
// 獲取文件的輸出流
FileOutputStream out = new FileOutputStream(file);
int len;
byte[] buffer = new byte[1024];
// 讀取(字節)字節到緩沖區
while ((len = inPutZip.read(buffer)) != -1) {
// 從緩沖區(0)位置寫入(字節)字節
out.write(buffer, 0, len);
out.flush();
}
out.close();
}
}
inPutZip.close();
}
public static List getFilesAllName(String path) {
File file=new File(path);
File[] files=file.listFiles();
if (files == null){
Log.e("error","空目錄");
return null;
}
List s = new ArrayList<>();
for(int i =0;i
s.add(files[i].getAbsolutePath());
}
return s;
}
}
2.使用示例,將assets中的壓縮文件解壓到App緩存,并獲取使用
//文件解壓
try{
AssetsZipUtils.UnZipAssetsFolder(getApplicationContext(),"fonts.zip",getExternalCacheDir().toString());
}catch (Exception e) {
e.printStackTrace();
}
//獲取解壓文件加下所有文件路徑
List filesAllName = AssetsZipUtils.getFilesAllName(getExternalCacheDir().toString() + File.separator + "fonts");
總結
以上是生活随笔為你收集整理的android assets解压,Android assets内压缩文件解压,解压到缓存示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哪座城市的美食最多,最好吃?
- 下一篇: 羊奶酪怎么制作的?