Java IO 创建文件解决文件名重复问题
之前在做上传的时候,文件命名都是按照时间毫秒数来命名的,如 2017120110344155.jpg 这种的
其实这种虽然能解决问题,但是我个人不是很喜欢。
我更希望是如果文件名不存在不修改文件名,如果存在在文件名后面加数字,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 IO 创建文件解决文件名重复问题相关推荐
- java io 创建文件夹_Java中Io流操作-File类的常用操作-创建文件,创建文件夹
package com.hxzy.IOSer; import java.io.File; import java.io.IOException; public class Demo03 { publi ...
- 获取文件夹中所有文件的文件名[重复]
本文翻译自:Getting the filenames of all files in a folder [duplicate] Possible Duplicate: 可能重复: Read all ...
- 【Java】创建文件夹
Java中创建文件夹使用File类下自带的mkdirs()方法就能够轻松完成了, 本来没有什么好说的,唯一值得注意的是这个mkdirs()能够一次性创建多级目录,无须递归调用.也就是说,我要创建在F盘 ...
- Java如何创建文件夹?
Java如何创建文件夹? Java如何创建目录文件夹? File类中有两个方法可以用来创建文件夹: mkdir( )方法:创建一个文件夹,成功则返回true,失败则返回false.失败表明File对象 ...
- java io在文件结尾持续添加内容
[代码] java io在文件结尾持续添加内容 public static void write(String path, String content) {try {File f = new Fil ...
- pom.xml错误:org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)的解决方法
pom.xml错误:org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)的解决方法 参考文章: (1)pom.xml ...
- java(IO)读写文件乱码转换UTF-8问题
java(IO)读写文件乱码转换UTF-8问题 读取文件String Content = ""; // 文件很长的话建议使用StringBuffertry {FileInputSt ...
- java io读取文件_java io读取文件操作代码实例
这篇文章主要介绍了java io读取文件操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主要分为字节读取和字符读取,字节读取可以一个一个 ...
- java.io.InvalidClassException异常解决
java.io.InvalidClassException异常解决 1.什么是serialVersionUID 2.java.io.InvalidClassException产生原因? 3.java. ...
- java io 读文件
java io 读文件 /** * 读取文件 * @param fileName 文件名称 */ private void readFile(String fil ...
最新文章
- Python的定义编码以及注释等
- 2018-2019-2 20175328 《Java程序设计》第十一周学习总结
- ubuntu apache fastcgi 虚拟主机安装
- matplotlib 等高线的绘制 —— plt.contour 与 plt.contourf
- 11-标志寄存器+adc/sbb+cmp+条件转移指令
- 详解大小额支付与超级网银
- live555作为RTSP客户端对接大华的某款球机RTSP流时不能预览问题的解决方案
- python复合赋值语句语法_复合结构的赋值语句理解
- 【整理】详解嵌入式片上资源之SDRAM内存
- 惠普台式计算机系统系统修复,一键恢复系统,详细教您怎么一键恢复惠普笔记本系统...
- 0x00000001java_「十六进制表示」0x00000001是个啥?32位表示、十六进制表示 - seo实验室...
- 都是was缓存惹的祸
- centos7输入ifconfg找不到ens33/eth0网卡信息,且service network restart重启网络失败
- guestbook.php注入,php防注入留言板(simple)
- 5万字 TypeScript入门系列(第四期)(建议收藏)
- ai人工智能_对人工智能的追求
- 使用多线程往同一个文件写入数据的线程安全的例子(java实现)
- 基于深度学习的身份证号码识别(OCR,Opencv,Pytorch)
- 学习运动控制卡难不难前提一定要会C #语言编程吗运动控制卡都有哪些品牌呢C#语言不会英文可以学习吗C#语言编程自学可以吗初中学历可以学习运动控制卡吗
- 大数据专业怎么样?是什么?