「javazip分包」java zip打包

博主:adminadmin 2022-11-28 20:17:09 51

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

本文目录一览:

JAVA解压缩ZIP包问题:

我试了一下,没有问题

先问一下,你用的JDK是什么版 本。我是1.6_20,直接用你的程序。

zipFile = new ZipFile(new File(zipfile),"GBK");

Enumeration enumeration = zipFile.getEntries();

是报错的。

我改成了

zipFile = new ZipFile(new File(zipfile));

Enumeration enumeration = zipFile.entries();

这应该不是主要问题。

有没有可能是你的压缩包损坏了。或是包里的那个文件坏了,跟一下断点,看一下是解那个文件出的错。

java怎么实现zip分卷压缩有关问题

直接用java 调用wondows 的cmd 就行了, 至于这个具体的命令 是7-zip提供的,这个需要去看看7-zip的文档.

java 如果zip里面含有zip应该如何将两个zip都解压

void decompression(File zipFile){

1:解压zipFile

2:遍历解压后的文件目录,找到其中的zip文件,然后

decompression(zip文件)

}

就是说递归

java服务器如何对zip文件分包上传?

这个你是用什么客户端上传呢?

java写的客户端和H5页面都可以做这个操作,思路都是一样的。

把文件切割再上传,后台接受结束后再把文件合并。

在DB里做个记录就是断点续传了嘛。

给点代码提示:

js:

每次上传2M,必须是支持H5的浏览器才行,兼容的问题需要注意!

function calculate(file,callBack){

    var fileReader = new FileReader(),    

        blobSlice = File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice,    

        chunkSize = 2097152,    

        // read in chunks of 2MB

        chunks = Math.ceil(file.size / chunkSize),    

        currentChunk = 0,    

        spark = new SparkMD5();    

    

    fileReader.onload = function(e) {    

        spark.appendBinary(e.target.result); // append binary string

        currentChunk++;    

    

        if (currentChunk  chunks) {    

            loadNext();    

        }    

        else {    

            callBack(spark.end());  

        }    

    };    

    

    function loadNext() {    

        var start = currentChunk * chunkSize,    

            end = start + chunkSize = file.size ? file.size : start + chunkSize;    

    

        fileReader.readAsBinaryString(blobSlice.call(file, start, end));    

    };    

    

    loadNext();    

}

java代码没什么注释,也不是全部的代码看个大概意思,理解一下吧

根据文件的MD5码来判断每次上传的文件是不是上传过的。

如果是就找到上次的点告诉前台从哪开始上传。

Message message = new Message();

PrintWriter out = response.getWriter();

ServiceBreakpointUpload service = new ServiceBreakpointUpload();

BreakpointShard shard = new BreakpointShard();

String currentShardIndex = "";

String totalShard = "";

String fileMD5 = "";

String fileName = "";

String fileType = "other";

try {

fileMD5 = request.getParameter("fileMD5");

Part part = request.getPart("fileData");

currentShardIndex = request.getParameter("currentShardIndex");

totalShard = request.getParameter("totalShard");

fileName = request.getParameter("fileName");

fileName = new String(fileName.getBytes("iso-8859-1"),"UTF-8");

fileType = request.getParameter("fileType");

String typeFolderName = service.getTypeFolder(fileType);

String folderPath = getServletContext().getRealPath("/upload/") + typeFolderName + File.separator;

String path = folderPath + fileName + "-" + fileMD5 + "-" + currentShardIndex;

System.out.println("fileName:"+fileName);

// 是否初次上传

if (!service.isUpload(fileMD5,fileType)) {

BreakpointFile breakpointFile = new BreakpointFile();

breakpointFile.setMd5(fileMD5);

breakpointFile.setFile_name(fileName);

breakpointFile.setTotal_shard(totalShard);

breakpointFile.setCurrent_shard_index(currentShardIndex);

breakpointFile.setFile_type(fileType);

breakpointFile.setPath(folderPath);

service.saveFile(breakpointFile);

} else {// 返回上次完成位置

service.updateFile(fileMD5, currentShardIndex,fileType);

System.out.println("upload shard "+currentShardIndex+" OK");

}

shard.setMd5(fileMD5);

shard.setShard_index(currentShardIndex);

shard.setPath(path);

service.saveShardFile(shard);

part.write(path);

if (currentShardIndex.equals(totalShard)) {// 上传完成

System.out.println("upload File finsh start merge shard");

service.mergeFiles(fileMD5,fileType);

System.out.println("merge shard OK");

message.setData("completed");

}

message.setData(currentShardIndex);

out.println(JSONObject.fromObject(message).toString());

} catch (Exception e) {

e.printStackTrace();

message.setHasError(true);

message.setErrorMessage("错误!");

out.println(JSONObject.fromObject(message).toString());

}

}

如何使用java压缩文件夹成为zip包

在JDK中有一个zip工具类:

java.util.zip    Provides classes for reading and writing the standard ZIP and

GZIP file formats.

使用此类可以将文件夹或者多个文件进行打包压缩操作。

在使用之前先了解关键方法:

ZipEntry(String name)         Creates a new zip entry with the specified name.

使用ZipEntry的构造方法可以创建一个zip压缩文件包的实例,然后通过ZipOutputStream将待压缩的文件以流的形式写进该压缩包中。具体实现代码如下:

import java.io.BufferedInputStream;  

import java.io.BufferedOutputStream;  

import java.io.File;  

import java.io.FileInputStream;  

import java.io.FileNotFoundException;  

import java.io.FileOutputStream;  

import java.io.IOException;  

import java.util.zip.ZipEntry;  

import java.util.zip.ZipOutputStream;  

/** 

 * 将文件夹下面的文件 

 * 打包成zip压缩文件 

 *  

 * @author admin 

 * 

 */  

public final class FileToZip {  

  

    private FileToZip(){}  

      

    /** 

     * 将存放在sourceFilePath目录下的源文件,打包成fileName名称的zip文件,并存放到zipFilePath路径下 

     * @param sourceFilePath :待压缩的文件路径 

     * @param zipFilePath :压缩后存放路径 

     * @param fileName :压缩后文件的名称 

     * @return 

     */  

    public static boolean fileToZip(String sourceFilePath,String zipFilePath,String fileName){  

        boolean flag = false;  

        File sourceFile = new File(sourceFilePath);  

        FileInputStream fis = null;  

        BufferedInputStream bis = null;  

        FileOutputStream fos = null;  

        ZipOutputStream zos = null;  

          

        if(sourceFile.exists() == false){  

            System.out.println("待压缩的文件目录:"+sourceFilePath+"不存在.");  

        }else{  

            try {  

                File zipFile = new File(zipFilePath + "/" + fileName +".zip");  

                if(zipFile.exists()){  

                    System.out.println(zipFilePath + "目录下存在名字为:" + fileName +".zip" +"打包文件.");  

                }else{  

                    File[] sourceFiles = sourceFile.listFiles();  

                    if(null == sourceFiles || sourceFiles.length1){  

                        System.out.println("待压缩的文件目录:" + sourceFilePath + "里面不存在文件,无需压缩.");  

                    }else{  

                        fos = new FileOutputStream(zipFile);  

                        zos = new ZipOutputStream(new BufferedOutputStream(fos));  

                        byte[] bufs = new byte[1024*10];  

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

                            //创建ZIP实体,并添加进压缩包  

                            ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName());  

                            zos.putNextEntry(zipEntry);  

                            //读取待压缩的文件并写进压缩包里  

                            fis = new FileInputStream(sourceFiles[i]);  

                            bis = new BufferedInputStream(fis, 1024*10);  

                            int read = 0;  

                            while((read=bis.read(bufs, 0, 1024*10)) != -1){  

                                zos.write(bufs,0,read);  

                            }  

                        }  

                        flag = true;  

                    }  

                }  

            } catch (FileNotFoundException e) {  

                e.printStackTrace();  

                throw new RuntimeException(e);  

            } catch (IOException e) {  

                e.printStackTrace();  

                throw new RuntimeException(e);  

            } finally{  

                //关闭流  

                try {  

                    if(null != bis) bis.close();  

                    if(null != zos) zos.close();  

                } catch (IOException e) {  

                    e.printStackTrace();  

                    throw new RuntimeException(e);  

                }  

            }  

        }  

        return flag;  

    }  

      

    public static void main(String[] args){  

        String sourceFilePath = "D:\\TestFile";  

        String zipFilePath = "D:\\tmp";  

        String fileName = "12700153file";  

        boolean flag = FileToZip.fileToZip(sourceFilePath, zipFilePath, fileName);  

        if(flag){  

            System.out.println("文件打包成功!");  

        }else{  

            System.out.println("文件打包失败!");  

        }  

    }  

      

}

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

The End

发布于:2022-11-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。