转载:https://blog.youkuaiyun.com/qq_34474324/article/details/97369763和https://blog.youkuaiyun.com/wer724853863/article/details/52636834
主要记录下关于文件的压缩、移动文件到指定文件夹、复制文件到指定文件夹
import org.apache.commons.io.FileUtils;
import java.io.*;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @author xks
* @date 2020/12/9 14:43
* @description :
*/
public class Test {
/**
* zip文件压缩
* @param inputFile 待压缩文件夹/文件名
* @param outputFile 生成的压缩包名字
*/
public static void ZipCompress(String inputFile, String outputFile) throws Exception {
//创建zip输出流
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outputFile));
//创建缓冲输出流
BufferedOutputStream bos = new BufferedOutputStream(out);
File input = new File(inputFile);
compress(out, bos, input,null);
bos.close();
out.close();
}
/**
* @param name 压缩文件名,可以写为null保持默认
*/
//递归压缩
public static void compress(ZipOutputStream out, BufferedOutputStream bos, File input, String name) throws IOException {
if (name == null) {
name = input.getName();
}
//如果路径为目录(文件夹)
if (input.isDirectory()) {
//取出文件夹中的文件(或子文件夹)
File[] flist = input.listFiles();
if (flist.length == 0)//如果文件夹为空,则只需在目的地zip文件中写入一个目录进入
{
out.putNextEntry(new ZipEntry(name + "/"));
} else//如果文件夹不为空,则递归调用compress,文件夹中的每一个文件(或文件夹)进行压缩
{
for (int i = 0; i < flist.length; i++) {
compress(out, bos, flist[i], name + "/" + flist[i].getName());
}
}
} else//如果不是目录(文件夹),即为文件,则先写入目录进入点,之后将文件写入zip文件中
{
out.putNextEntry(new ZipEntry(name));
FileInputStream fos = new FileInputStream(input);
BufferedInputStream bis = new BufferedInputStream(fos);
int len;
//将源文件写入到zip文件中
byte[] buf = new byte[1024];
while ((len = bis.read(buf)) != -1) {
bos.write(buf,0,len);
}
bos.flush();
bis.close();
fos.close();
}
}
public static void main(String[] args) {
//压缩文件
try {
ZipCompress("D:\\ftpHome\\上传文件\\2019\\12\\31\\201912211116547_TempUpLoadFolderZip\\test", "E:\\项目部署记录\\11\\1101.zip");
} catch (Exception e) {
e.printStackTrace();
}
//移动文件到指定文件夹
/* try {
//目的目录
File decDirection = new File("E:\\项目部署记录\\11\\12\\");
//如果目的目录路径不存在,则进行创建
if(!decDirection.exists()) {
decDirection.mkdirs();
}
File afile = new File("E:\\项目部署记录\\11\\1101.txt");
if (afile.renameTo(new File(decDirection + afile.getName()))) {
System.out.println("File is moved successful!");
} else {
System.out.println("File is failed to move!");
}
} catch (Exception e) {
e.printStackTrace();
}*/
//复制文件到另一个目录 commons-io-2.1.jar
/*File file = new File("E:\\项目部署记录\\11\\1101.txt");
String s = "E:\\项目部署记录\\11\\1101.txt";
s.substring(s.indexOf("E:\\项目部署记录"));
String fileName = new Date().getTime() + "_" + file.getName();
String filePath = "E:\\项目部署记录\\11\\12\\" + fileName;
try {
FileUtils.copyFile(file, new File(filePath));
} catch (IOException e) {
e.printStackTrace();
}*/
}
}