「java读取压缩包的文件」java读取zip

博主:adminadmin 2023-03-17 17:07:09 334

今天给各位分享java读取压缩包的文件的知识,其中也会对java读取zip进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java读取压缩文件并压缩

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.List;

import java.util.zip.ZipEntry;

import java.util.zip.ZipInputStream;

import java.util.zip.ZipOutputStream;

public class JZip {

public static int iCompressLevel;//压缩比 取值范围为0~9

public static boolean bOverWrite;//是否覆盖同名文件 取值范围为True和False

@SuppressWarnings("unchecked")

private static ArrayList AllFiles = new ArrayList();

public static String sErrorMessage;

private String zipFilePath;

public ListFile srcMap;

public JZip () {

iCompressLevel = 9;

// bOverWrite=true;

}

public JZip(String zipFilePath) throws FileNotFoundException, IOException {

this.zipFilePath = zipFilePath;

}

@SuppressWarnings("unchecked")

public static ArrayList extract (String sZipPathFile , String sDestPath) {

ArrayList AllFileName = new ArrayList();

try {

//先指定压缩档的位置和档名,建立FileInputStream对象

FileInputStream fins = new FileInputStream(sZipPathFile);

//将fins传入ZipInputStream中

ZipInputStream zins = new ZipInputStream(fins);

ZipEntry ze = null;

byte ch[] = new byte[256];

while ((ze = zins.getNextEntry()) != null) {

File zfile = new File(sDestPath + ze.getName());

File fpath = new File(zfile.getParentFile().getPath());

if (ze.isDirectory()) {

if (!zfile.exists())

zfile.mkdirs();

zins.closeEntry();

} else {

if (!fpath.exists())

fpath.mkdirs();

FileOutputStream fouts = new FileOutputStream(zfile);

int i;

AllFileName.add(zfile.getAbsolutePath());

while ((i = zins.read(ch)) != -1)

fouts.write(ch, 0, i);

zins.closeEntry();

fouts.close();

}

}

fins.close();

zins.close();

sErrorMessage = "OK";

} catch (Exception e) {

System.err.println("Extract error:" + e.getMessage());

sErrorMessage = e.getMessage();

}

AllFiles.clear();

return AllFileName;

}

@SuppressWarnings({ "unchecked", "static-access" })

public static void compress (String sPathFile , boolean bIsPath , String sZipPathFile) {

try {

String sPath;

//先指定压缩档的位置及档名,建立一个FileOutputStream

FileOutputStream fos = new FileOutputStream(sZipPathFile);

//建立ZipOutputStream并将fos传入

ZipOutputStream zos = new ZipOutputStream(fos);

//设置压缩比

zos.setLevel(iCompressLevel);

if (bIsPath == true) {

searchFiles(sPathFile);

sPath = sPathFile;

} else {

File myfile = new File(sPathFile);

sPath = sPathFile.substring(0, sPathFile.lastIndexOf(myfile.separator) + 1);

AllFiles.add(myfile);

}

Object[] myobject = AllFiles.toArray();

ZipEntry ze = null;

//每个档案要压缩,都要透过ZipEntry来处理

FileInputStream fis = null;

BufferedReader in = null;

//byte[] ch = new byte[256];

for (int i = 0 ; i myobject.length ; i++) {

File myfile = (File) myobject[i];

if (myfile.isFile()) {

in = new BufferedReader(new InputStreamReader(new FileInputStream(myfile.getPath()),"iso8859-1"));

//以档案的名字当Entry,也可以自己再加上额外的路径

//例如 ze=new ZipEntry("test\\"+myfiles[i].getName());

//如此压缩档内的每个档案都会加test这个路径

ze = new ZipEntry(myfile.getPath().substring((sPath).length()));

//将ZipEntry透过ZipOutputStream的putNextEntry的方式送进去处理

fis = new FileInputStream(myfile);

zos.putNextEntry(ze);

int len = 0;

//开始将原始档案读进ZipOutputStream

while ((len = in.read()) != -1) {

zos.write(len);

}

fis.close();

zos.closeEntry();

}

}

zos.close();

fos.close();

AllFiles.clear();

sErrorMessage = "OK";

} catch (Exception e) {

System.err.println("Compress error:" + e.getMessage());

sErrorMessage = e.getMessage();

}

}

/*

这是一个递归过程,功能是检索出所有的文件名称

dirstr:目录名称

*/

@SuppressWarnings("unchecked")

private static void searchFiles (String dirstr) {

File tempdir = new File(dirstr);

if (tempdir.exists()) {

if (tempdir.isDirectory()) {

File[] tempfiles = tempdir.listFiles();

for (int i = 0 ; i tempfiles.length ; i++) {

if (tempfiles[i].isDirectory())

searchFiles(tempfiles[i].getPath());

else {

AllFiles.add(tempfiles[i]);

}

}

} else {

AllFiles.add(tempdir);

}

}

}

public String getZipFilePath() {

return zipFilePath;

}

public void setZipFilePath(String zipFilePath) {

this.zipFilePath = zipFilePath;

}

/**

* 解析zip文件得到文件名

* @return

* @throws FileNotFoundException

* @throws IOException

*/

public boolean parserZip() throws FileNotFoundException, IOException {

FileInputStream fis = new FileInputStream(zipFilePath);

ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));

ZipEntry entry;

try {

srcMap = new ArrayListFile();

while ((entry = zis.getNextEntry()) != null) {

File file = new File(zipFilePath + File.separator + entry.getName());

srcMap.add(file);

}

zis.close();

fis.close();

return true;

} catch (IOException e) {

return false;

}

}

/**

*

* @param zipFileName 待解压缩的ZIP文件

* @param extPlace 解压后的文件夹

*/

public static void extZipFileList(String zipFileName, String extPlace) {

try {

ZipInputStream in = new ZipInputStream(new FileInputStream(

zipFileName));

File files = new File(extPlace);

files.mkdirs();

ZipEntry entry = null;

while ((entry = in.getNextEntry()) != null) {

String entryName = entry.getName();

if (entry.isDirectory()) {

File file = new File(files + entryName);

file.mkdirs();

System.out.println("创建文件夹:" + entryName);

} else {

OutputStream os = new FileOutputStream(files+File.separator + entryName);

// Transfer bytes from the ZIP file to the output file

byte[] buf = new byte[1024];

int len;

while ((len = in.read(buf)) 0) {

os.write(buf, 0, len);

}

os.close();

in.closeEntry();

System.out.println("解压文件:" + entryName);

}

}

} catch (IOException e) {

}

}

@SuppressWarnings("static-access")

public static void main(String args[]){

}

}

如何用java读取zip文件名和zip内文件的文件名,在线等

public static void te(File f) throws IOException {

if (!f.exists() || !f.isDirectory()) {

return;

}

File[] subFiles = f.listFiles();

ZipFile zipFile = null;

for (int i = 0, ii = subFiles == null ? 0 : subFiles.length; i ii; i++) {

if (subFiles[i].isFile()) {

try {

zipFile = new ZipFile(subFiles[i]);

Enumeration entries = zipFile.entries();

System.out.println("压缩文件:" + subFiles[i].getAbsolutePath());

while(entries.hasMoreElements())

{

System.out.println(" entry:" + ((ZipEntry)entries.nextElement()).getName());

}

zipFile.close();

} catch (ZipException e) {

//System.out.println(e.getMessage());

}

}

}

}

怎么从压缩文件中读取文件并显示文件中的内容 java编写

思路是这样的:

1、将压缩文件解压缩到临时目录

2、读取临时目录中的文件或者文件夹(如果是文件夹则读取文件夹中的文件,以此类推)

3、将读取的内容显示

4、删除临时文件夹中的文件或者文件夹

这些都没有难点,你觉得对你来说难度在哪里呢

java读取国产uos压缩的zip文件,zipFile.getInputStream为空怎么解决呀?

通过Java来读取UOS格式的国产文档的话,是有API可以来读取的,你可以通过Maven仓库来在下载spire.xls.jar, 在pom.xml中配置依赖:

repositories

repository

idcom.e-iceblue/id

namee-iceblue/name

url

/repository/repositories

dependencies

dependency

groupId e-iceblue /groupId

artifactIdspire.xls/artifactId

version12.7.4/version

/dependency

/dependencies

java 解压缩之后文件内容读取

您的排序与zip排序不一样。

所以第一步应该得到所有名称,然后再按照新的顺序来读

如果只是解压到某处,新的顺序一点用处都没有!

java怎么读取Zip和RAR里面的文件啊?

ZipInputStream是一个指向ZIP文件的流,这个流最重要的方法就是getNextEntry方法,一个zip文件可以包含好几个被压缩的文件,这个方法的功能就是返回下一个目录项,也就是返回zip文件中的下一项,并且把流指向这个目录文件项。getNextEntry的返回值是ZipEntry,它表示zip文件中的一个项,它可以返回这个文件项的大小、名称等。你可以根据它返回的文件大小调用ZipInputStream的read方法来读取需要的字节。给你一个例子:public class ZipTest {

public static void main(String args[]) throws FileNotFoundException, IOException{

ZipInputStream zis = new ZipInputStream(new FileInputStream ("c://a.zip"));//生成读取ZIP文件的流

ZipEntry ze = zis.getNextEntry();//取得下一个文件项

long size = ze.getSize();//取得这一项的大小

FileOutputStream fos = new FileOutputStream("c://"+ze.getName());//产生输出文件对象

for(int i= 0;isize;i++){//循环读取文件并写入输出文件对象

byte c = (byte)zis.read();

fos.write(c);

}

fos.close();

zis.close();

}

}

关于java读取压缩包的文件和java读取zip的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。