Android Zip 解壓與進度 實現

2021-10-22 19:26:37 字數 2741 閱讀 6619

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...