JAVA实现文件自动重命名
2016-07-06 09:53
597 查看
实现类似于win7,提示已经存在该文件,自动在后缀名前加 (1) 。
PS:代码写了很早了,里面有些地方写的很幼稚。。。
PS:代码写了很早了,里面有些地方写的很幼稚。。。
package com.work.test; import java.io.File; import java.util.ArrayList; import java.util.List; public class ReName { public static void main(String[] args) { File file = new File("D:\\"); List<String> list = new ArrayList<String>(); for (String string : file.list()) { if (new File(file.getAbsolutePath(), string).isFile()) { list.add(string); } } String newFileName = "123.txt"; ReName name = new ReName(); String autoName = name.checkZipName(list, newFileName, 1); System.out.println(autoName); } public String checkZipName(List<String> saveZipName, String fileName, int j){ boolean exist = false; //默认名字不重名 for (int i = 0; i < saveZipName.size(); i++) { if (fileName.equals(saveZipName.get(i))) { exist = true; break; } } if (exist) { //如果重名重新生成个名字 //处理原先的名字 将后缀名字去掉 int endIndex = fileName.lastIndexOf("."); if (endIndex > 0 && (endIndex + 1) < fileName.length()) { //文件名字存在后缀名 不以点开头 也不以点结尾 String fileNameLeftTemp = fileName; String fileNameRightTemp = fileName; String fileNameTempLeft = fileNameLeftTemp.substring(0, endIndex); //文件名字 String fileNameTempRight = fileNameRightTemp.substring(endIndex + 1, fileName.length()); //文件后缀名字 if (fileNameTempLeft.lastIndexOf("(") < 0 || fileNameTempLeft.lastIndexOf(")") < 0 || (fileNameTempLeft.length() - 1) > fileNameTempLeft.lastIndexOf(")") || (fileNameTempLeft.lastIndexOf(")") - fileNameTempLeft.lastIndexOf("(")) <= 1) { //文件名字没有(2)的形式 fileName = checkZipName(saveZipName, fileNameTempLeft + "(" + j +")." + fileNameTempRight, j++); //递归生成文件名字 } else { //文件已经存在 adb(1).doc或者 adb(i).doc 的形式 //取出 1 或者 i 等字符串 实现自增 String fileNameTempLeftString = fileNameTempLeft; String numCountString = fileNameTempLeftString.substring(fileNameTempLeftString.lastIndexOf("(") + 1, fileNameTempLeftString.lastIndexOf(")")); int numCount = -1; try { numCount = Integer.parseInt(numCountString); } catch (Exception e) { numCount = -1; } if (numCount > 1) { //是数字,不是字符串,截取(x)之前的字符 在numCount这个数字的基础上实现自增 String realName = fileNameTempLeft.substring(0, fileNameTempLeft.lastIndexOf("(")); fileName = checkZipName(saveZipName, realName + "(" + ++numCount +")." + fileNameTempRight, 2); //递归生成文件名字 } else { //是字符串 fileName = checkZipName(saveZipName, fileNameTempLeft + "(" + j +")." + fileNameTempRight, j++); //递归生成文件名字 } } } else { //文件不存在后缀名字(以点结尾也是不存在) String fileNameTempLeft = fileName; if (fileNameTempLeft.lastIndexOf("(") < 0 || fileNameTempLeft.lastIndexOf(")") < 0 || (fileNameTempLeft.length() - 1) > fileNameTempLeft.lastIndexOf(")") || (fileNameTempLeft.lastIndexOf(")") - fileNameTempLeft.lastIndexOf("(")) <= 1) { //文件名字没有(2)的形式 fileName = checkZipName(saveZipName, fileNameTempLeft + "(" + j +")", j++); //递归生成文件名字 } else { //文件已经存在 adb(1)或者 adb(i)的形式 //取出 1 或者 i 等字符串 实现自增 String fileNameTempLeftString = fileNameTempLeft; String numCountString = fileNameTempLeftString.substring(fileNameTempLeftString.lastIndexOf("(") + 1, fileNameTempLeftString.lastIndexOf(")")); int numCount = -1; try { numCount = Integer.parseInt(numCountString); } catch (Exception e) { numCount = -1; } if (numCount > 1) { //是数字,不是字符串,截取(x)之前的字符 在numCount这个数字的基础上实现自增 String realName = fileNameTempLeft.substring(0, fileNameTempLeft.lastIndexOf("(")); fileName = checkZipName(saveZipName, realName + "(" + ++numCount +")", 2); //递归生成文件名字 } else { //是字符串 fileName = checkZipName(saveZipName, fileNameTempLeft + "(" + j +")", j++); //递归生成文件名字 } } } } return fileName; } }
相关文章推荐
- JavaWeb总结--Servlet 工作原理解析
- spring mvc中log4j的配置与使用
- spring(错误二) Error creating bean with name 'xxxx'
- JAVA Math 常用方法
- org.springframework.util.Assert
- Java Web学习总结(20)——基于ZooKeeper的分布式session实现
- Java Web学习总结(20)——基于ZooKeeper的分布式session实现
- Java Web学习总结(20)——基于ZooKeeper的分布式session实现
- SpringMVC+Spring Data JPA+Shiro+EasyUI简单权限管理系统
- Spring Web MVC框架的特点
- JAVA中堆和栈的区别
- Java基础学习总结(29)——浅谈Java中的Set、List、Map的区别
- Java基础学习总结(29)——浅谈Java中的Set、List、Map的区别
- Eclipse F3 无法打开定义和申明
- Ehcache与Spring 使用页面、对象缓存
- Java基础学习总结(27)——7 款开源 Java 反编译工具
- Java基础学习总结(27)——7 款开源 Java 反编译工具
- Java基础学习总结(27)——7 款开源 Java 反编译工具
- Struts2主题和模板
- 递归<二> --- 遍历指定目录下所有文件