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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

【移動應用開發(fā)技術】Android中怎么實現(xiàn)一個Zip解壓縮工具類

Android中怎么實現(xiàn)一個Zip解壓縮工具類,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面在下將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。具體內容如下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)位置寫入(字節(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)位置寫入(字節(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);

//完成和關閉

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();

//沒有子文件和壓縮

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

最新文檔

評論

0/150

提交評論