java文件处理之压缩,分割

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

java文件处理之压缩,分割

标签: javaexceptionimportnullbytefile
 分类:
 
点滴(12) 

一.简单文件压缩,解压

 

package cn.edu.nju.vicken;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

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

 二.定时器程序

 

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

 

三.分割,合并文件

 

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

转载于:https://www.cnblogs.com/donaldlee2008/p/5312118.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

成功通过pmp_这就是你为啥要学PMP!!!

好多学员一开始就会问&#xff0c;我为什么要学PMP&#xff0c;学这个对我到底有啥用啊&#xff1f;带着疑问&#xff0c;今天小编带你一起走进PMP&#xff01; PMP 证书价值&#xff1a; 1、很多国际国内公司要求项目经理持证上岗&#xff08;企业的投资、战略目标的实现多是依…

C# 判断给定大数是否为质数,目标以快速度得到正确的计算结果。

标题是一个测试题。在看到这道题的时候&#xff0c;第一反应这是一道考程序复杂度的题&#xff0c;其次再是算法问题。 我们先来看看质数的规则: Link&#xff1a;http://en.wikipedia.org/wiki/Prime_number C#求质数代码&#xff1a; 1 public bool primeNumber(int …

Hook KiUserExceptionDispatcher参数指针错误的问题

跟了一个晚上,终于解决了 大概要实现的是用这个函数替换ntdll中的KiUserExceptionDispatcher,实现方法如下: VOID NTAPI KiUserExceptionDispatcher(PEXCEPTION_RECORD pExcptRec,PCONTEXT pContext) { DWORD retValue; if (RtlDispatchException(pExcptRec,pContext)) { retVa…

Docker image Introduce

Docker 的image是运行的基本.例如我们build一个image时, 在Dockerfile每条指令会产生一个可读写的image, 下一条指令使用上一条指令产生的image为基础, 继续产生image(然后删除上一个image), 如果指令没有对image有修改的动作, 那么可以使用image cache. 所有的指令执行完, 生成…

vue 筛选组件_记一个复杂组件(Filter)的从设计到开发

此文前端框架使用 rax&#xff0c;全篇代码暂未开源&#xff08;待开源&#xff09;原文链接地址&#xff1a;Nealyang/PersonalBlog前言貌似在面试中&#xff0c;你如果设计一个 react/vue 组件&#xff0c;貌似已经是司空见惯的问题了。本文不是理论片&#xff0c;更多的是自…

Adobe称Flash技术遭排斥 呼吁政府介入

据国外媒体昨日报道&#xff0c;Adobe在一份提交给美国证交会的申报文件中抱怨称&#xff0c;Flash技术遭到苹果的全面排斥&#xff0c;这有可能对Adobe的业务产生影响。一位业内人士指出&#xff0c;此举彰显出Adobe可能要求政府机构的介入。 呼吁政府介入苹果旗下iPod Touch、…

python的正则表达式 re

2019独角兽企业重金招聘Python工程师标准>>> 原文发表在&#xff1a; http://luy.li/2010/05/12/python-re/ 延伸阅读&#xff1a;python的 内建函数 和 subprocess 。此文是本系列的第三篇文章了&#xff0c;和之前一样&#xff0c;内容出自官方文档&#xff0c;但…

python爬取图书信息_Python3 爬虫爬取中国图书网(淘书团) 记录

本人为一名刚开始学Python爬虫的小白&#xff0c;开贴仅为记录下自己的学习历程&#xff0c;方便做review要爬取链接&#xff1a;http://tuan.bookschina.com/要爬取内容&#xff1a; 图书名称&#xff0c; 图书价格&#xff0c; 以及对应预览图的link本文用到py packages: req…

求1到100中9的个数

个位9的数目十位9的数目 #include<stdio.h> int main() {int num 0;int count 0;for (num 1; num < 100; num){if (num % 10 9) //个位9的个数count;if (num / 10 9)//十位9的个数count;}printf("%d", count);return 0; }

Android 核心已经从 Linux kernel 代码库中删除

Greg Kroah-Hartman Novell 的开发人员&#xff0c;他主要负责维护 Linux 操作系统的启动&#xff0c;USB和驱动核心&#xff0c;近日他表示谷歌 Android 系统的驱动核心 已经从 Linux kernel 2.6.33 代码库中删除。Greg Kroah-Hartman 也是一个 Android 手机系统的爱好者&…

福克斯保养明细

福克斯轮胎厚度&#xff1a; 胎冠厚度在13mm左右(胎冠花纹深7mm、胎冠厚6mm&#xff09;&#xff0c; 胎侧厚度5mm。 现在的轿车轮胎一般胎面胶层厚度都比较厚&#xff0c;以165/70R13 锦湖KR19轮胎为例:花纹深度为7毫米&#xff0c;缓冲层1&#xff0d;1.5毫米&#xff0c;冠带…

python中英文半角还是全角_Python3全角转半角的方法

相信大家都对全角半角的概念已经有所了解了。中文文字永远是全角&#xff0c;只有英文字母、数字键、符号键才有全角半角的概念,一个字母或数字占一个汉字的位置叫全角&#xff0c;占半个汉字的位置叫半角。标点符号在中英文状态下、全半角的状态下是不同的。转换说明全角半角转…

USACO 1.1 Your Ride Is Here

今天开始切USACO 加油 /* ID: aznfy1 PROG: ride LANG: C */ #include <iostream> #include <fstream> #include <string> #include <stdio.h>using namespace std;char a[10],b[10];int main() {freopen("ride.in","r",stdin);f…

C语言分数求和

eg.1-1/21/3-1/41/5-1/6…1/99-1/100 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h>int main() {int i 0;double sum 0.0;int flag 1;for (i 1; i < 100; i){sum flag*1.0 / i;flag -flag;}printf("%lf\n", sum);return 0; }

Mysql支持的数据类型(总结)

2019独角兽企业重金招聘Python工程师标准>>> 一.数值类型 Mysql支持所有标准SQL中的数值类型&#xff0c;其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC)&#xff0c;以及近似数值数据类型(FLOAT,REAL,DOUBLE PRESISION),并在此基础上进行扩展。 扩展后增…

chrome web store的信息

chrome web store终于现身了&#xff0c;期待好久了啊&#xff01;以后好玩了&#xff0c;哈哈。迅速记录一下几个链接&#xff1a;https://chrome.google.com/webstorehttp://groups.google.com/a/chromium.org/group/chromium-apps/topicshttp://code.google.com/intl/zh-CN/…

uniapp 获取到js文件var一个变量怎么获取到这个变量值_浅析Js中const,let,var的区别及作用域...

理解&#xff1a;let变量的作用域只能在当前函数中js中const,let,var的区别及作用域_lianzhang861的博客-CSDN博客​blog.csdn.net全局作用域中&#xff0c;用 const 和 let 声明的变量不在 window 上&#xff0c;那到底在哪里&#xff1f;如何去获取&#xff1f;​blog.csdn.n…

C语言求十个数中最大值

一.代码 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() {int arr[] { 1,2,3,4,5,63,7,8,9,11 };int sz sizeof(arr) / sizeof(arr[0]);int max arr[0];int i 0;for (i 1; i < 10; i){if (arr[i] > max)max arr[i];}printf("%d\n&qu…

ubuntu20.04安装timeshift最新方法

总结&#xff1a; 现在可以使用如下代码安装 sudo apt-get update sudo apt-get install timeshift原因&#xff1a; 在尝试Timeshift系统备份与还原中的方法时&#xff0c; sudo apt-add-repository -y ppa:teejee2008/ppa运行失败。 更改为以下代码&#xff1a; sudo a…

js基础练习---面向对象浅理解分析

function createPerson(name,sex,color) //构造函数{var objnew Object();//创建一个空对象obj.namename; obj.sexsex;obj.colorcolor;obj.Shownamefunction(){alert("我的名字是"this.name);};obj.Showsexfunction(){alert("我是"this.sex"的")…