安卓解压文件
主要就是采用流的方式處理大文件
1.先將源文件轉換成安卓系統自帶CheckedInputStream,這個是一個檢驗流:
CheckedInputStream cis = new CheckedInputStream(new FileInputStream(srcFile), new CRC32());2.再將這個檢驗流轉換成Zip輸入流:
ZipInputStream zis = new ZipInputStream(cis);3.獲取zip流的實體:
while ((zipEntry = zis.getNextEntry()) != null)4.然后用字節輸出流的方式:
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));int len;byte[] buff = new byte[DEFAULT_BUFF_SIZE];while ((len = zis.read(buff, 0 ,DEFAULT_BUFF_SIZE)) != -1) {bos.write(buff, 0, len);}完整代碼:
public static File decompress(File srcFile, File destFile) throws Exception {while (destFile.exists()) {destFile = new File(destFile.getAbsolutePath()+"1");}CheckedInputStream cis = new CheckedInputStream(new FileInputStream(srcFile), new CRC32());ZipInputStream zis = new ZipInputStream(cis);doDecompress(destFile, zis);zis.close();return destFile;}private static void doDecompress(File destFile, ZipInputStream zis) throws Exception {ZipEntry zipEntry = null;while ((zipEntry = zis.getNextEntry()) != null) {String dir = destFile.getPath() + File.separator + zipEntry.getName();File dirFile = new File(dir);fileProber(dirFile);if (zipEntry.isDirectory()) {dirFile.mkdirs();} else {doDecompressFile(dirFile, zis);}zis.closeEntry();}}private static void doDecompressFile(File destFile, ZipInputStream zis) throws Exception {BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));int len;byte[] buff = new byte[DEFAULT_BUFF_SIZE];while ((len = zis.read(buff, 0 ,DEFAULT_BUFF_SIZE)) != -1) {bos.write(buff, 0, len);}bos.close();}總結
- 上一篇: 转载:递归神经网络
- 下一篇: 解决NVIDIA显卡 GPU显示器不可用