【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)一個(gè)Zip解壓縮工具類_第1頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)一個(gè)Zip解壓縮工具類_第2頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)一個(gè)Zip解壓縮工具類_第3頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)一個(gè)Zip解壓縮工具類_第4頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)一個(gè)Zip解壓縮工具類_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)一個(gè)Zip解壓縮工具類

Android中怎么實(shí)現(xiàn)一個(gè)Zip解壓縮工具類,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面在下將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。具體內(nèi)容如下package

mons.utils;

import

android.util.Log;

import

java.io.File;

import

java.io.FileInputStream;

import

java.io.FileOutputStream;

import

java.io.InputStream;

import

java.util.ArrayList;

import

java.util.List;

import

java.util.zip.ZipEntry;

import

java.util.zip.ZipFile;

import

java.util.zip.ZipInputStream;

import

java.util.zip.ZipOutputStream;

/**

*

@author:

lijuan

*

@description:

解壓ZIP文件

*

@date:

2017-04-11

*

@time:

09:22

*/

public

class

ZipUtils

{

public

static

final

String

TAG="ZIP";

public

ZipUtils(){

}

/**

*

解壓zip到指定的路徑

*

@param

zipFileString

ZIP的名稱

*

@param

outPathString

要解壓縮路徑

*

@throws

Exception

*/

public

static

void

UnZipFolder(String

zipFileString,

String

outPathString)

throws

Exception

{

ZipInputStream

inZip

=

new

ZipInputStream(new

FileInputStream(zipFileString));

ZipEntry

zipEntry;

String

szName

=

"";

while

((zipEntry

=

inZip.getNextEntry())

!=

null)

{

szName

=

zipEntry.getName();

if

(zipEntry.isDirectory())

{

//獲取部件的文件夾名

szName

=

szName.substring(0,

szName.length()

-

1);

File

folder

=

new

File(outPathString

+

File.separator

+

szName);

folder.mkdirs();

}

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];

//

讀?。ㄗ止?jié))字節(jié)到緩沖區(qū)

while

((len

=

inZip.read(buffer))

!=

-1)

{

//

從緩沖區(qū)(0)位置寫(xiě)入(字節(jié))字節(jié)

out.write(buffer,

0,

len);

out.flush();

}

out.close();

}

}

inZip.close();

}

public

static

void

UnZipFolder(String

zipFileString,

String

outPathString,String

szName)

throws

Exception

{

ZipInputStream

inZip

=

new

ZipInputStream(new

FileInputStream(zipFileString));

ZipEntry

zipEntry;

while

((zipEntry

=

inZip.getNextEntry())

!=

null)

{

//szName

=

zipEntry.getName();

if

(zipEntry.isDirectory())

{

//獲取部件的文件夾名

szName

=

szName.substring(0,

szName.length()

-

1);

File

folder

=

new

File(outPathString

+

File.separator

+

szName);

folder.mkdirs();

}

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];

//

讀?。ㄗ止?jié))字節(jié)到緩沖區(qū)

while

((len

=

inZip.read(buffer))

!=

-1)

{

//

從緩沖區(qū)(0)位置寫(xiě)入(字節(jié))字節(jié)

out.write(buffer,

0,

len);

out.flush();

}

out.close();

}

}

inZip.close();

}

/**

*

壓縮文件和文件夾

*

@param

srcFileString

要壓縮的文件或文件夾

*

@param

zipFileString

解壓完成的Zip路徑

*

@throws

Exception

*/

public

static

void

ZipFolder(String

srcFileString,

String

zipFileString)throws

Exception

{

//創(chuàng)建ZIP

ZipOutputStream

outZip

=

new

ZipOutputStream(new

FileOutputStream(zipFileString));

//創(chuàng)建文件

File

file

=

new

File(srcFileString);

//壓縮

ZipFiles(file.getParent()+File.separator,

file.getName(),

outZip);

//完成和關(guān)閉

outZip.finish();

outZip.close();

}

/**

*

壓縮文件

*

@param

folderString

*

@param

fileString

*

@param

zipOutputSteam

*

@throws

Exception

*/

private

static

void

ZipFiles(String

folderString,

String

fileString,

ZipOutputStream

zipOutputSteam)throws

Exception{

if(zipOutputSteam

==

null)

return;

File

file

=

new

File(folderString+fileString);

if

(file.isFile())

{

ZipEntry

zipEntry

=

new

ZipEntry(fileString);

FileInputStream

inputStream

=

new

FileInputStream(file);

zipOutputSteam.putNextEntry(zipEntry);

int

len;

byte[]

buffer

=

new

byte[4096];

while((len=inputStream.read(buffer))

!=

-1)

{

zipOutputSteam.write(buffer,

0,

len);

}

zipOutputSteam.closeEntry();

}

else

{

//文件夾

String

fileList[]

=

file.list();

//沒(méi)有子文件和壓縮

if

(fileList.length

<=

0)

{

ZipEntry

zipEntry

=

new

ZipEntry(fileString+File.separator);

zipOutputSteam.putNextEntry(zipEntry);

zipOutputSteam.closeEntry();

}

//子文件和遞歸

for

(int

i

=

0;

i

<

fileList.length;

i++)

{

ZipFiles(folderString,

fileString+

File.separator+fileList[i],

zipOutputSteam);

}

}

}

/**

*

返回zip的文件輸入流

*

@param

zipFileString

zip的名稱

*

@param

fileString

ZIP的文件名

*

@return

InputStream

*

@throws

Exception

*/

public

static

InputStream

UpZip(String

zipFileString,

String

fileString)throws

Exception

{

ZipFile

zipFile

=

new

ZipFile(zipFileString);

ZipEntry

zipEntry

=

zipFile.getEntry(fileString);

return

zipFile.getInputStream(zipEntry);

}

/**

*

返回ZIP中的文件列表(文件和文件夾)

*

@param

zipFileString

ZIP的名稱

*

@param

bContainFolder

是否包含文件夾

*

@param

bContainFile

是否包含文件

*

@return

*

@throws

Exception

*/

public

static

List<File>

GetFileList(String

zipFileString,

boolean

bContainFolder,

boolean

bContainFile)throws

Exception

{

List<File>

fileList

=

new

ArrayList<File>();

ZipInputStream

inZip

=

new

ZipInputStream(new

FileInputStream(zipFileString));

ZipEntry

zipEntry;

String

szName

=

"";

while

((zipEntry

=

inZip.getNextEntry())

!=

null)

{

szName

=

zipEntry.getName();

if

(zipEntry.isDirectory())

{

//

獲取部件的文件夾名

szName

=

szName.substring(0,

szName.length()

-

1);

File

folder

=

new

File(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論