Java IO 创建文件解决文件名重复问题
2018-03-17 10:22
543 查看
之前在做上传的时候,文件命名都是按照时间毫秒数来命名的,如 2017120110344155.jpg 这种的
其实这种虽然能解决问题,但是我个人不是很喜欢。我更希望是如果文件名不存在不修改文件名,如果存在在文件名后面加数字,1,2,3这种的。像这样
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
其实这种虽然能解决问题,但是我个人不是很喜欢。我更希望是如果文件名不存在不修改文件名,如果存在在文件名后面加数字,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
相关文章推荐
- java文件下载的文件名乱码问题的解决
- java文件导出文件名乱码问题解决
- 使用eclipse创建多文件java工程出现找不到或无法加载主类问题解决
- java 下载文件解决文件名乱码问题
- 解决java读取大文件内存溢出问题、如何在不重复读取与不耗尽内存的情况下处理大文件
- 多次创建object 写入对象文件中.java.io.StreamCorruptedException: invalid type code: AC解决办法
- 解决java读取大文件内存溢出问题、如何在不重复读取与不耗尽内存的情况下处理大文件
- 解决java读取大文件内存溢出问题、如何在不重复读取与不耗尽内存的情况下处理大文件
- Java下载文件时文件名乱码问题解决办法
- 解决java读取大文件内存溢出问题、如何在不重复读取与不耗尽内存的情况下处理大文件
- Java中的IO File类创建名字new.txt文件 是否成功创建问题
- Flex+Java组合解决汉字或特殊符号(如&等)文件下载时的文件名乱码问题
- jsp页面java+js实现文件下载(并附带解决下载文件名乱码问题-火狐浏览器正常访问)
- (Java控制台程序版)递归打包整个父文件夹下的文件和子文件夹成压缩文件(*.ZIP)以及打包时常见的文件乱码和文件名乱码以及丢失文件或文件损坏问题解决办法
- Android学习之创建中间缓存文件,处理文件名重复问题
- 解决java java.io.FileNotFoundException: http:\localhost:8080 (文件名、目录名或卷)问题
- java文件导出文件名乱码问题解决
- 【java】[文件上传jar包]commons-fileUpload组件解决文件上传(文件名)乱码问题
- java文件下载的中文文件名乱码问题的解决
- 关于eclipse中android在创建之后R.java文件出现问题的解决办法