先展示输出的文件
filePath传入文件地址类似:“E:\test\withHead.xlsx”(注意在java中文件路径要双斜杠\\)
/**
* 调用getOutputStream()方法获取输出流
* @param fileName 创建的文件路径
* @return
*/
private static OutputStream getOutputStream(String filePath) {
OutputStream outputStream = null;//创建输出流
try {
//创建一个新的File调用工具类返回一个未重名的文件
File file = FileUtils.isCoverFile(new File(filePath));
outputStream = new FileOutputStream(file);
} catch (Exception e) {
e.printStackTrace();
}
return outputStream;
}
下面是工具类的代码
public class FileUtils {
/**
* 是否覆盖已存在文件
* @param file 下载的文件
* @return
*/
public static File isCoverFile(File file){
return isCoverFile(file,false);
}
/**
* 是否覆盖已存在文件
* @param file 下载的文件
* @param isCover 是否覆盖 true-覆盖 false-不覆盖
* @return
*/
public static File isCoverFile(File file,boolean isCover){
if (isCover){
return file;
}
return isFileExists(file,1);
}
/**
* 文件是否已存在
* 若存在,更改文件名
* @param file 下载的文件
* @param index 重新命名编号
* @return
*/
public static File isFileExists(File file,Integer index){
//文件是否存在
if (file.isFile()){
//按最后一个 . 或 (1). 拆分
String[] splitFileName = file.getPath().split("((\([0-9]+\))\.|\.)(?=[^.]*$)");
//再拼接上编号
String fileName = splitFileName[0] + "("+index+")."+ splitFileName[1];
file = new File(fileName);
//递归判断改名后的文件名是否重复
return isFileExists(file,++index);
}
//文件不存在直接返回就完事了
return file;
}
个人第一篇博客,有问题请在评论区指出,希望能对你有帮助。
点个赞再走呗,多摸一会儿鱼:)