将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面
import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class DirCopy { public static void main(String[] args) throws Exception{ dirZipCopy("E:/source","F:/source.zip"); } /** * 文件夹压缩备份 * @param fromDir 要压缩备份的文件夹 * @param toDir 压缩至的路径 * @throws Exception */ public static void dirZipCopy(String fromDir,String toDir) throws Exception{ //创建ZIP输出流 ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(toDir)); //递归处理文件夹 zipCopy(new File(fromDir),zos,""); zos.close(); } /** * 压缩复制文件 * @param fromDir 要压缩的文件 * @param zos ZIP输出流 * @param path 相对于ZIP文件的路径 * @throws Exception */ private static void zipCopy(File fromDir,ZipOutputStream zos,String path) throws Exception{ if(fromDir.exists()){ if(fromDir.isDirectory()){ path += fromDir.getName()+"/"; zos.putNextEntry(new ZipEntry(path)); File[] files=fromDir.listFiles(); if(files != null){ for(int i=0;i<files.length;i++){ zipCopy(files[i],zos,path); } } }else{ //putNextEntry():开始写入新的 ZIP 文件条目并将流定位到条目数据的开始处。 zos.putNextEntry(new ZipEntry(path+fromDir.getName())); InputStream is=new FileInputStream(fromDir); int len=0; byte[] b=new byte[1024]; while((len=is.read(b))!=-1){ zos.write(b,0,len); zos.flush(); } is.close(); } } } }
文件复制
public class FileCopy2 { public static void main(String[] args) { fileCopy("F:/abc.rmvb", "F:/source/abc.rmvb"); } public static void fileCopy(String srcFileSource,String destFileSource){ try { //读取原文件内容 FileInputStream in=new FileInputStream(srcFileSource); FileOutputStream out=new FileOutputStream(destFileSource); int len=0; byte[] indata=new byte[1024*10]; while((len=in.read(indata))!=-1){ out.write(indata); } in.close(); out.close(); } catch (Exception e) { e.printStackTrace(); } } }