java笔试题: ——将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面

时间:2023-11-11 11:02:14

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