package com.company.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @description: 文件工具类
* @author: chunguang.yao
* @date: 2020-02-23 10:51
*/
public class FileUtil {
/**
* 复制文件
* @param src 源文件路径
* @param dest 目标文件路径
*/
public static void copyFile(String src, String dest) throws Exception {
File srcFile = new File(src);
File destFile = new File(dest);
// 判断文件是否存在
if(!srcFile.exists()) {
throw new Exception("src is not exists!");
}
// 判断是否是文件
if(!srcFile.isFile()) {
throw new Exception("src not a file!");
}
// 判断目标路径是否存在
if(!destFile.isDirectory()) {
throw new Exception("dest is not exists!");
}
// 获取源文件名
String fileName = src.substring(src.lastIndexOf(File.separator) + 1);
// 判断是否存在相同的文件名
File[] files = destFile.listFiles();
for (File file : files) {
if(fileName.equals(file.getName())) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String dateStr = sdf.format(new Date());
// 获取前缀
String prefix = fileName.substring(0, fileName.lastIndexOf("."));
// 获取后缀
String suffix = fileName.substring(fileName.lastIndexOf("."));
// 重命名文件为 原文件名_时间(yyyyMMddHHmmss)+源文件后缀
fileName = prefix + "_" + dateStr + suffix;
}
}
// 目标文件名
String destFileName = dest + File.separator + fileName;
File targetFile = new File(destFileName);
FileInputStream inputStream = null;
FileOutputStream outputStream = null;
try {
inputStream = new FileInputStream(srcFile);
outputStream = new FileOutputStream(targetFile);
byte[] buf = new byte[1024 * 8];
int len = 0;
while ((len = inputStream.read(buf)) != -1) {
outputStream.write(buf, 0, len);
outputStream.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
if(inputStream != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
}
}
/**
* 移动文件
* @param src 源文件
* @param dest 目标文件
*/
public static void moveFile(String src, String dest) {
File oldFile = new File(src);
// 获取源文件名
String fileName = src.substring(src.lastIndexOf(File.separator) + 1);
// 目标文件名
String destFileName = dest + File.separator + fileName;
File targetFile = new File(destFileName);
oldFile.renameTo(targetFile);
}
/**
* 删除文件
* @param path 文件路径
*/
public static void deleteFile(String path) {
File file = new File(path);
if(file.exists() && file.isFile()) {
file.delete();
}
}
}