您的位置:首页 > 编程语言 > Java开发

java文件处理之压缩,分割操作

2013-02-10 17:52 351 查看
一.简单文件压缩,解压

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: