java文件处理之压缩,分割

时间:2023-03-09 13:38:16
java文件处理之压缩,分割

http://blog.csdn.net/ycg01/article/details/1366648

2006-11-05 00:30 1574人阅读 评论(1) 收藏 举报
java文件处理之压缩,分割 分类:
点滴(12) java文件处理之压缩,分割

版权声明:本文为博主原创文章,未经博主允许不得转载。

一.简单文件压缩,解压

java文件处理之压缩,分割package cn.edu.nju.vicken;
java文件处理之压缩,分割
java文件处理之压缩,分割import java.io.BufferedInputStream;
java文件处理之压缩,分割import java.io.BufferedOutputStream;
java文件处理之压缩,分割import java.io.File;
java文件处理之压缩,分割import java.io.FileInputStream;
java文件处理之压缩,分割import java.io.FileOutputStream;
java文件处理之压缩,分割import java.io.InputStream;
java文件处理之压缩,分割import java.io.OutputStream;
java文件处理之压缩,分割import java.util.ArrayList;
java文件处理之压缩,分割import java.util.Enumeration;
java文件处理之压缩,分割import java.util.List;
java文件处理之压缩,分割import java.util.zip.ZipEntry;
java文件处理之压缩,分割import java.util.zip.ZipFile;
java文件处理之压缩,分割import java.util.zip.ZipOutputStream;
java文件处理之压缩,分割
java文件处理之压缩,分割/**
java文件处理之压缩,分割 * 
java文件处理之压缩,分割 * @author VickenYang
java文件处理之压缩,分割 * 文件处理工具
java文件处理之压缩,分割 */
java文件处理之压缩,分割public class FileProcessor {
java文件处理之压缩,分割    
java文件处理之压缩,分割    public static void createZipFile(File from,File to) throws Exception {
java文件处理之压缩,分割        if(!from.isFile()){
java文件处理之压缩,分割            throw new Exception("file not exists"+from.getAbsolutePath());
java文件处理之压缩,分割        }
java文件处理之压缩,分割        if(to.isFile()){
java文件处理之压缩,分割            throw new Exception("file already exists"+to.getAbsolutePath());
java文件处理之压缩,分割        }
java文件处理之压缩,分割        else{
java文件处理之压缩,分割            to.createNewFile();
java文件处理之压缩,分割        }
java文件处理之压缩,分割        
java文件处理之压缩,分割        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(to));
java文件处理之压缩,分割        ZipEntry ze = null;
java文件处理之压缩,分割        byte[] buf = new byte[1024];
java文件处理之压缩,分割        int readLen = 0;
java文件处理之压缩,分割        ze = new ZipEntry(from.getAbsolutePath());
java文件处理之压缩,分割        ze.setSize(from.length());
java文件处理之压缩,分割        ze.setTime(from.lastModified());
java文件处理之压缩,分割        zos.putNextEntry(ze);
java文件处理之压缩,分割        InputStream is = new BufferedInputStream(new FileInputStream(from));
java文件处理之压缩,分割        while ((readLen=is.read(buf, 0, 1024))!=-1) {
java文件处理之压缩,分割            zos.write(buf, 0, readLen);
java文件处理之压缩,分割        }
java文件处理之压缩,分割        is.close();
java文件处理之压缩,分割        zos.close();
java文件处理之压缩,分割    }
java文件处理之压缩,分割    
java文件处理之压缩,分割    public static void decompressZipFile(File from,File to) throws Exception{
java文件处理之压缩,分割        if(!from.isFile()){
java文件处理之压缩,分割            throw new Exception("file not exists"+from.getAbsolutePath());
java文件处理之压缩,分割        }
java文件处理之压缩,分割        if(!to.isDirectory()){
java文件处理之压缩,分割            throw new Exception("file not directory"+to.getAbsolutePath());
java文件处理之压缩,分割        }
java文件处理之压缩,分割        ZipFile zfile = new ZipFile(from.getAbsoluteFile());
java文件处理之压缩,分割        Enumeration zList = zfile.entries();
java文件处理之压缩,分割        ZipEntry ze=null;
java文件处理之压缩,分割        byte[] buf=new byte[1024];
java文件处理之压缩,分割        while(zList.hasMoreElements()){
java文件处理之压缩,分割            ze=(ZipEntry)zList.nextElement();
java文件处理之压缩,分割            if(ze.isDirectory()){
java文件处理之压缩,分割                continue;
java文件处理之压缩,分割            }
java文件处理之压缩,分割            String[] zet = ze.getName().replace('/', '/').split("/");
java文件处理之压缩,分割            OutputStream os=new BufferedOutputStream(new FileOutputStream(to.getAbsoluteFile()+zet[zet.length-1]));
java文件处理之压缩,分割            InputStream is=new BufferedInputStream(zfile.getInputStream(ze));
java文件处理之压缩,分割            int readLen=0;
java文件处理之压缩,分割            while ((readLen=is.read(buf, 0, 1024))!=-1) {
java文件处理之压缩,分割                os.write(buf, 0, readLen);
java文件处理之压缩,分割            }
java文件处理之压缩,分割            is.close();
java文件处理之压缩,分割            os.close();
java文件处理之压缩,分割        }
java文件处理之压缩,分割        zfile.close();
java文件处理之压缩,分割    }
java文件处理之压缩,分割}
java文件处理之压缩,分割

二.定时器程序

java文件处理之压缩,分割import java.util.Timer;
java文件处理之压缩,分割import java.util.TimerTask;
java文件处理之压缩,分割class MyTask extends TimerTask{
java文件处理之压缩,分割    String name;
java文件处理之压缩,分割    public MyTask(String name){
java文件处理之压缩,分割        this.name = name;
java文件处理之压缩,分割    }
java文件处理之压缩,分割    public void run(){
java文件处理之压缩,分割        System.out.println(name);
java文件处理之压缩,分割    }
java文件处理之压缩,分割}
java文件处理之压缩,分割public class TestTask {
java文件处理之压缩,分割    public static void main(String[] args) {
java文件处理之压缩,分割        // TODO Auto-generated method stub
java文件处理之压缩,分割        TimerTask task = new MyTask("10秒执行一次");
java文件处理之压缩,分割        java.util.Date today = new java.util.Date();
java文件处理之压缩,分割        //开始时间设置为昨天
java文件处理之压缩,分割        java.util.Date beginTime = new java.util.Date(today.getYear(),today.getMonth(),today.getDate()-1,22,0,0);
java文件处理之压缩,分割        //10秒一次
java文件处理之压缩,分割        new Timer().schedule(task,beginTime,1000*10);
java文件处理之压缩,分割        //执行一次
java文件处理之压缩,分割        task = new MyTask("只执行一次");
java文件处理之压缩,分割        new Timer().schedule(task,beginTime);
java文件处理之压缩,分割    }
java文件处理之压缩,分割}

三.分割,合并文件

java文件处理之压缩,分割//拆分文件
java文件处理之压缩,分割    public static void splitFile(File file,int size) throws Exception{
java文件处理之压缩,分割        if(size<=0){
java文件处理之压缩,分割            size = 1024;
java文件处理之压缩,分割        }
java文件处理之压缩,分割        if(!file.isFile()){
java文件处理之压缩,分割            throw new Exception("file not exists"+file.getAbsolutePath());
java文件处理之压缩,分割        }
java文件处理之压缩,分割        String filename = file.getAbsolutePath();
java文件处理之压缩,分割        File filetmp = new File(filename+"_"+0+".vk");
java文件处理之压缩,分割        if(filetmp.isFile()){
java文件处理之压缩,分割            throw new Exception("file exists"+filetmp.getAbsolutePath());
java文件处理之压缩,分割        }
java文件处理之压缩,分割        
java文件处理之压缩,分割        byte[] buf = new byte[1024*10];
java文件处理之压缩,分割        FileInputStream fis = new FileInputStream(file);
java文件处理之压缩,分割        int readsize = 0;
java文件处理之压缩,分割        int pos = 0;
java文件处理之压缩,分割        int k = 0;
java文件处理之压缩,分割        int m = -1;
java文件处理之压缩,分割        File fileout = null;
java文件处理之压缩,分割        FileOutputStream fos = null;
java文件处理之压缩,分割        while((readsize = fis.read(buf, 0, buf.length))>0){
java文件处理之压缩,分割            
java文件处理之压缩,分割            if(k!=m)
java文件处理之压缩,分割            {
java文件处理之压缩,分割                if(fos!=null){
java文件处理之压缩,分割                    fos.close();
java文件处理之压缩,分割                    fos = null;
java文件处理之压缩,分割                }
java文件处理之压缩,分割                m = k;
java文件处理之压缩,分割                fileout = new File(filename+"_"+k+".vk");
java文件处理之压缩,分割                fos = new FileOutputStream(fileout);
java文件处理之压缩,分割            }
java文件处理之压缩,分割            fos.write(buf,0,readsize);
java文件处理之压缩,分割            fos.flush();
java文件处理之压缩,分割            pos += readsize;
java文件处理之压缩,分割            if(pos>size*(k+1)){
java文件处理之压缩,分割                k++;
java文件处理之压缩,分割            }
java文件处理之压缩,分割        }
java文件处理之压缩,分割        if(fos!=null){
java文件处理之压缩,分割            fos.close();
java文件处理之压缩,分割            fos = null;
java文件处理之压缩,分割        }
java文件处理之压缩,分割        fis.close();
java文件处理之压缩,分割    }
java文件处理之压缩,分割    
java文件处理之压缩,分割    
java文件处理之压缩,分割    //合并文件
java文件处理之压缩,分割    public static void combination(File file) throws Exception{
java文件处理之压缩,分割        String filename = file.getAbsolutePath();
java文件处理之压缩,分割        File fileout = new File(filename);
java文件处理之压缩,分割        
java文件处理之压缩,分割        if(fileout.isFile()){
java文件处理之压缩,分割            throw new Exception("file exists"+fileout.getAbsolutePath());
java文件处理之压缩,分割        }
java文件处理之压缩,分割        FileOutputStream fos = new FileOutputStream(fileout);
java文件处理之压缩,分割        int k = 0;
java文件处理之压缩,分割        File filein = null;
java文件处理之压缩,分割        FileInputStream fis = null;
java文件处理之压缩,分割        byte[] buf = new byte[1024*10];
java文件处理之压缩,分割        while(true){
java文件处理之压缩,分割            if(fis!=null){
java文件处理之压缩,分割                fis.close();
java文件处理之压缩,分割                fis = null;
java文件处理之压缩,分割            }
java文件处理之压缩,分割            filein = new File(filename+"_"+k+".vk");
java文件处理之压缩,分割            if(!filein.isFile()){
java文件处理之压缩,分割                break;
java文件处理之压缩,分割            }
java文件处理之压缩,分割            fis = new FileInputStream(filein);
java文件处理之压缩,分割            int readsize = 0;
java文件处理之压缩,分割            while((readsize = fis.read(buf, 0, buf.length))>0){
java文件处理之压缩,分割                fos.write(buf,0,readsize);
java文件处理之压缩,分割                fos.flush();
java文件处理之压缩,分割            }
java文件处理之压缩,分割            k++;
java文件处理之压缩,分割        }
java文件处理之压缩,分割        if(fis!=null){
java文件处理之压缩,分割            fis.close();
java文件处理之压缩,分割            fis = null;
java文件处理之压缩,分割        }
java文件处理之压缩,分割        fos.close();
java文件处理之压缩,分割    }