1.inpath 與 outpath
private string inpath =
"/storage/emulated/0/hello.zip"
;//壓縮包路徑
private string outpath =
"/storage/emulated/0/"
;//解壓路徑
/sdcard/hello.zip 中 有乙個 hello.txt 文字中有一句話,讀取出來顯示
這裡我先實現一下讀取乙個zip的大小,這裡使用的是zip這個類,我們可以進行遍歷計算總大小,如下**:
private
long
getzipfilesize
(file filepath)
}catch
(ioexception e)
return size;
}
這個**比較好理解,轉換成zipfile之後進行while讀取計算大小總和,當然,我們現在就開始實現解壓這個操作了,至於計算總大小和,實際上是為了鋪墊大家對zip的一些印象,我們看如下**:
/**
* 解壓
* @param inpath
* @param outpath
*/private
void
unzip
(string inpath,string outpath)
zipentry mzipentry;
//zip實體
string pathfilename ="";
while
((mzipentry = zipinputstream.
getnextentry()
)!= null)
else}}
}catch
(filenotfoundexception e)
catch
(ioexception e)
}
在這個**中我們可以看到傳入了兩個引數,乙個是檔案的原始路徑,乙個是解壓路徑,接著,我將原始路徑轉為zipinputstream後進行while迴圈,如果是資料夾則建立資料夾路徑,不是資料夾則直接建立檔案,此時如果執行的話,將會有解壓功能,但是內容卻是空的,因為我們的資料流還沒有寫入,同時我們也可以在寫入的時候計算解壓進度使用百分比顯示,所以這裡我們可以寫乙個介面或者其他呈現的方式,因為解壓是耗時操作,我這裡畢竟是demo就簡單點寫了:
/**
* 解壓
* @param inpath
* @param outpath
*/private
void
unzip
(string inpath,string outpath)
//*try
zipentry mzipentry;
//zip實體
string pathfilename ="";
while
((mzipentry = zipinputstream.
getnextentry()
)!= null)
else
fileoutputstream out =
newfileoutputstream
(file)
;int len;
long count =0;
byte
buffer =
newbyte
[1024];
//讀取(位元組)位元組到緩衝區
while
((len = zipinputstream.
read
(buffer))!=
-1)}
);//從緩衝區(0)位置寫入(位元組)位元組
out.
write
(buffer,
0,len)
; out.
flush()
;}out.
close()
;//讀取內容
readfilecontent()
;}}}
catch
(filenotfoundexception e)
catch
(ioexception e)
}
仔細看我增加的問他,我通過fileoutputstream來寫入資料,並且對進度進行了計算,當拷貝完成後我通過readfilecontent函式將裡面的內容讀取出來,我們來看下readfilecontent的**:
private
void
readfilecontent()
try tv_file_content.
settext
(sb.
tostring()
);is.
close()
;}catch
(filenotfoundexception e)
catch
(ioexception e)
}
這裡因為裡面的內容是中文,所以我的編碼為gbk,其他的沒什麼,直接讀取後顯示出來,最終的結果:
嗯,沒錯,我的文字中就一行文字,好了,到此,解壓的步驟算是完成
Android Zip 解壓 與 進度 實現
首先我們明確一下需求 sdcard hello.zip 中 有乙個 hello.txt 文字中有一句話,讀取出來顯示 這裡我先實現一下讀取乙個zip的大小,這裡使用的是zipfile這個類,我們可以進行遍歷計算總大小,如下 這個 比較好理解,轉換成zipfile之後進行while讀取計算大小總和,當...
Android Zip解壓相關
ps 最近一有空就抽時間撈以前一些用過的但是沒記錄的小技能。獲取zipfile大小 param path return public static long getzipfilesize file path catch ioexception e return size 解壓 param input...
c 解壓zip 進度 C 壓縮解壓zip 檔案
1 2 zip 壓縮檔案3 4 public classzip5 10 region 加壓方法 11 14 被壓縮的資料夾夾路徑 15 生成壓縮檔案的路徑,為空則預設與被壓縮資料夾同一級目錄,名稱為 資料夾名 zip 16 出錯資訊 17 是否壓縮成功 18 public static bool z...