之前在做上传的时候,文件命名都是按照时间毫秒数来命名的,如 2017120110344155.jpg 这种的

其实这种虽然能解决问题,但是我个人不是很喜欢。

我更希望是如果文件名不存在不修改文件名,如果存在在文件名后面加数字,1,2,3这种的。

像这样

代码演示

下面通过一个拷贝文件的例子完成这个想法

  1. package practice.IO;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. /**
  7. * @author 言曌
  8. * @date 2017/12/2 上午10:59
  9. */
  10. public class Demo {
  11. /**
  12. * 将 /Users/liuyanzhao/Desktop/spring.jpeg 文件
  13. * 拷贝到
  14. * /Users/liuyanzhao/Desktop/io/中
  15. * 需要避免文件名重复覆盖的情况
  16. */
  17. public static void main(String args[]) throws IOException {
  18. //源文件
  19. File sourceFile = new File("/Users/liuyanzhao/Desktop/spring.jpeg");
  20. //文件的完整名称,如spring.jpeg
  21. String filename = sourceFile.getName();
  22. //文件名,如spring
  23. String name = filename.substring(0,filename.indexOf("."));
  24. //文件后缀,如.jpeg
  25. String suffix = filename.substring(filename.lastIndexOf("."));
  26. //目标文件
  27. File descFile = new File("/Users/liuyanzhao/Desktop/io"+File.separator+filename);
  28. int i = 1;
  29. //若文件存在重命名
  30. while(descFile.exists()) {
  31. String newFilename = name+"("+i+")"+suffix;
  32. String parentPath = descFile.getParent();
  33. descFile = new File(parentPath+ File.separator+newFilename);
  34. i++;
  35. }
  36. descFile.createNewFile();  //新建文件
  37. FileInputStream fin = new FileInputStream(sourceFile);
  38. FileOutputStream fout = new FileOutputStream(descFile);
  39. byte[] data = new byte[512];
  40. int rs = -1;
  41. while((rs=fin.read(data))>0) {
  42. fout.write(data,0,rs);
  43. }
  44. fout.close();
  45. fin.close();
  46. }
  47. }

最终效果是如上图如果文件存在,重命名加(1),如果还存在加(2),...

本文地址:https://liuyanzhao.com/6861.html

Java IO 创建文件解决文件名重复问题相关推荐

  1. java io 创建文件夹_Java中Io流操作-File类的常用操作-创建文件,创建文件夹

    package com.hxzy.IOSer; import java.io.File; import java.io.IOException; public class Demo03 { publi ...

  2. 获取文件夹中所有文件的文件名[重复]

    本文翻译自:Getting the filenames of all files in a folder [duplicate] Possible Duplicate: 可能重复: Read all ...

  3. 【Java】创建文件夹

    Java中创建文件夹使用File类下自带的mkdirs()方法就能够轻松完成了, 本来没有什么好说的,唯一值得注意的是这个mkdirs()能够一次性创建多级目录,无须递归调用.也就是说,我要创建在F盘 ...

  4. Java如何创建文件夹?

    Java如何创建文件夹? Java如何创建目录文件夹? File类中有两个方法可以用来创建文件夹: mkdir( )方法:创建一个文件夹,成功则返回true,失败则返回false.失败表明File对象 ...

  5. java io在文件结尾持续添加内容

    [代码] java io在文件结尾持续添加内容 public static void write(String path, String content) {try {File f = new Fil ...

  6. 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 ...

  7. java(IO)读写文件乱码转换UTF-8问题

    java(IO)读写文件乱码转换UTF-8问题 读取文件String Content = ""; // 文件很长的话建议使用StringBuffertry {FileInputSt ...

  8. java io读取文件_java io读取文件操作代码实例

    这篇文章主要介绍了java io读取文件操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主要分为字节读取和字符读取,字节读取可以一个一个 ...

  9. java.io.InvalidClassException异常解决

    java.io.InvalidClassException异常解决 1.什么是serialVersionUID 2.java.io.InvalidClassException产生原因? 3.java. ...

  10. java io 读文件

    java io 读文件 /**      * 读取文件      * @param fileName 文件名称      */     private void readFile(String fil ...

最新文章

  1. Python的定义编码以及注释等
  2. 2018-2019-2 20175328 《Java程序设计》第十一周学习总结
  3. ubuntu apache fastcgi 虚拟主机安装
  4. matplotlib 等高线的绘制 —— plt.contour 与 plt.contourf
  5. 11-标志寄存器+adc/sbb+cmp+条件转移指令
  6. 详解大小额支付与超级网银
  7. live555作为RTSP客户端对接大华的某款球机RTSP流时不能预览问题的解决方案
  8. python复合赋值语句语法_复合结构的赋值语句理解
  9. 【整理】详解嵌入式片上资源之SDRAM内存
  10. 惠普台式计算机系统系统修复,一键恢复系统,详细教您怎么一键恢复惠普笔记本系统...
  11. 0x00000001java_「十六进制表示」0x00000001是个啥?32位表示、十六进制表示 - seo实验室...
  12. 都是was缓存惹的祸
  13. centos7输入ifconfg找不到ens33/eth0网卡信息,且service network restart重启网络失败
  14. guestbook.php注入,php防注入留言板(simple)
  15. 5万字 TypeScript入门系列(第四期)(建议收藏)
  16. ai人工智能_对人工智能的追求
  17. 使用多线程往同一个文件写入数据的线程安全的例子(java实现)
  18. 基于深度学习的身份证号码识别(OCR,Opencv,Pytorch)
  19. 学习运动控制卡难不难前提一定要会C #语言编程吗运动控制卡都有哪些品牌呢C#语言不会英文可以学习吗C#语言编程自学可以吗初中学历可以学习运动控制卡吗
  20. 大数据专业怎么样?是什么?

热门文章

  1. 蒙特卡洛方法到底有什么用(两个案例说明)
  2. SpringBoot(九):fastjson、异常处理
  3. 好书推荐:OpenSuse
  4. 关于sql 拼接字符串的问题
  5. 查看oracle数据库是否归档和修改归档模式(转)
  6. AccessHelper
  7. [ACM] hdu 2079 选课时间(普通型母函数)
  8. Flash与后台数据交互方法总结
  9. JAVA求n个数里最小的k个_n个数 找到最小的k个数 几种解法 和java实现
  10. rdd数据存内存 数据量_技术分享|大数据技术初探之Spark 任务调度与优化