之前在做上传的时候,文件命名都是按照时间毫秒数来命名的,如 2017120110344155.jpg 这种的
其实这种虽然能解决问题,但是我个人不是很喜欢。
我更希望是如果文件名不存在不修改文件名,如果存在在文件名后面加数字,1,2,3这种的。
像这样
下面通过一个拷贝文件的例子完成这个想法
最终效果是如上图如果文件存在,重命名加(1),如果还存在加(2),...
本文地址:https://liuyanzhao.com/6861.html
其实这种虽然能解决问题,但是我个人不是很喜欢。
我更希望是如果文件名不存在不修改文件名,如果存在在文件名后面加数字,1,2,3这种的。
像这样
代码演示
下面通过一个拷贝文件的例子完成这个想法
- package practice.IO;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- /**
- * @author 言曌
- * @date 2017/12/2 上午10:59
- */
- public class Demo {
- /**
- * 将 /Users/liuyanzhao/Desktop/spring.jpeg 文件
- * 拷贝到
- * /Users/liuyanzhao/Desktop/io/中
- * 需要避免文件名重复覆盖的情况
- */
- public static void main(String args[]) throws IOException {
- //源文件
- File sourceFile = new File("/Users/liuyanzhao/Desktop/spring.jpeg");
- //文件的完整名称,如spring.jpeg
- String filename = sourceFile.getName();
- //文件名,如spring
- String name = filename.substring(0,filename.indexOf("."));
- //文件后缀,如.jpeg
- String suffix = filename.substring(filename.lastIndexOf("."));
- //目标文件
- File descFile = new File("/Users/liuyanzhao/Desktop/io"+File.separator+filename);
- int i = 1;
- //若文件存在重命名
- while(descFile.exists()) {
- String newFilename = name+"("+i+")"+suffix;
- String parentPath = descFile.getParent();
- descFile = new File(parentPath+ File.separator+newFilename);
- i++;
- }
- descFile.createNewFile(); //新建文件
- FileInputStream fin = new FileInputStream(sourceFile);
- FileOutputStream fout = new FileOutputStream(descFile);
- byte[] data = new byte[512];
- int rs = -1;
- while((rs=fin.read(data))>0) {
- fout.write(data,0,rs);
- }
- fout.close();
- fin.close();
- }
- }
最终效果是如上图如果文件存在,重命名加(1),如果还存在加(2),...
本文地址:https://liuyanzhao.com/6861.html
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏