将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面
1 import java.io.*;
2 import java.util.zip.ZipEntry;
3 import java.util.zip.ZipOutputStream;
4
5 public class DirCopy {
6 public static void main(String[] args) throws Exception{
7 dirZipCopy("E:/source","F:/source.zip");
8 }
9 /**
10 * 文件夹压缩备份
11 * @param fromDir 要压缩备份的文件夹
12 * @param toDir 压缩至的路径
13 * @throws Exception
14 */
15 public static void dirZipCopy(String fromDir,String toDir) throws Exception{
16 //创建ZIP输出流
17 ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(toDir));
18 //递归处理文件夹
19 zipCopy(new File(fromDir),zos,"");
20 zos.close();
21 }
22 /**
23 * 压缩复制文件
24 * @param fromDir 要压缩的文件
25 * @param zos ZIP输出流
26 * @param path 相对于ZIP文件的路径
27 * @throws Exception
28 */
29 private static void zipCopy(File fromDir,ZipOutputStream zos,String path) throws Exception{
30 if(fromDir.exists()){
31 if(fromDir.isDirectory()){
32 path += fromDir.getName()+"/";
33 zos.putNextEntry(new ZipEntry(path));
34 File[] files=fromDir.listFiles();
35 if(files != null){
36 for(int i=0;i<files.length;i++){
37 zipCopy(files[i],zos,path);
38 }
39 }
40 }else{
41 //putNextEntry():开始写入新的 ZIP 文件条目并将流定位到条目数据的开始处。
42 zos.putNextEntry(new ZipEntry(path+fromDir.getName()));
43 InputStream is=new FileInputStream(fromDir);
44 int len=0;
45 byte[] b=new byte[1024];
46 while((len=is.read(b))!=-1){
47 zos.write(b,0,len);
48 zos.flush();
49 }
50 is.close();
51 }
52 }
53 }
54 }
文件复制
1 public class FileCopy2 { 2 public static void main(String[] args) { 3 fileCopy("F:/abc.rmvb", "F:/source/abc.rmvb"); 4 } 5 public static void fileCopy(String srcFileSource,String destFileSource){ 6 try { 7 //读取原文件内容 8 FileInputStream in=new FileInputStream(srcFileSource); 9 FileOutputStream out=new FileOutputStream(destFileSource); 10 int len=0; 11 byte[] indata=new byte[1024*10]; 12 while((len=in.read(indata))!=-1){ 13 out.write(indata); 14 } 15 in.close(); 16 out.close(); 17 } catch (Exception e) { 18 e.printStackTrace(); 19 } 20 } 21 }