java 解决文件名重复问题的两种方法

您所在的位置:网站首页 上传文件后面有个数字怎么办 java 解决文件名重复问题的两种方法

java 解决文件名重复问题的两种方法

2024-05-30 23:53| 来源: 网络整理| 查看: 265

java 解决文件名重复问题的两种方法

在项目开发过程中,在保存文件的时候,通常要考虑文件名重复的情况,一般来说会有两种做法

1.如果文件名不存在,不修改文件名;如果存在在文件名。在文件名后面加数字,1,2,3 。。。

image

以“时间戳+随机数”来命名文件

image

第一种方法的实现 public static File createOrRenameFile(File from){ String[] fileInfo = getFileInfo(from); String toPrefix=fileInfo[0]; String toSuffix=fileInfo[1]; File file; file = FileUtils.createOrRenameFile(from, toPrefix, toSuffix); return file; } /** * sdcard/pic/tanyang.jpg * * toPrefix: tanyang * toSuffix: tanyang.jpg * @param from * @param toPrefix * @param toSuffix * @return */ public static File createOrRenameFile(File from, String toPrefix, String toSuffix) { File directory = from.getParentFile(); if (!directory.exists()) { if (directory.mkdir()) { Log.v(TAG, "Created directory " + directory.getAbsolutePath()); } } File newFile = new File(directory, toPrefix + toSuffix); for (int i = 1; newFile.exists() && i < Integer.MAX_VALUE; i++) { newFile = new File(directory, toPrefix + '(' + i + ')' + toSuffix); } if (!from.renameTo(newFile)) { Log.w(TAG, "Couldn't rename file to " + newFile.getAbsolutePath()); return from; } return newFile; } 首先我们先来了解一下 toPrefix,toSuffix 是什么?

1)假如我们文件的全路径是 sdcard/pic/tanyang.jpg ,那么 toPrefix 是 tanyang,toSuffix 是 。jpg

2)假如我们文件的全路径是 sdcard/pic/tanyang ,那么 toPrefix 是 tanyang,toSuffix 是 空字符串。相当于 String toSuffix="";

获取文件的 toPrefix,toSuffix;

/** * * @param from * fileInfo[0]: toPrefix; * fileInfo[1]:toSuffix; * @return */ public static String[] getFileInfo(File from){ String fileName=from.getName(); int index = fileName.lastIndexOf("."); String toPrefix=""; String toSuffix=""; if(index==-1){ toPrefix=fileName; }else{ toPrefix=fileName.substring(0,index); toSuffix=fileName.substring(index,fileName.length()); } return new String[]{toPrefix,toSuffix}; } 原理解析 根据文件名获取 toPrefix,toSuffix。根据 directory,toPrefix,toSuffix 判断文件是否存在,如果存在,toPrefix + ‘(’ + i + ‘)’,直到文件不存在。 以“时间戳+随机数”来命名文件 public static String generateSuffix() { // 获得当前时间 DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); // 转换为字符串 String formatDate = format.format(new Date()); // 随机生成文件编号 int random = new Random().nextInt(10000); return new StringBuffer().append(formatDate).append( random).toString(); } public static File createFileWithCurDate(File from){ String[] fileInfo = getFileInfo(from); String toPrefix=fileInfo[0]+generateSuffix(); String toSuffix=fileInfo[1]; return new File(from.getParent(),toPrefix+toSuffix); } 原理解析 获取文件的 toPrefix,toSuffix;在创建文件之前对 toPrefix 进行处理,加上当前的时间,以及随机文件编号,确保文件名是唯一的;

卖一下广告,欢迎大家关注我的微信公众号程序员徐公, 目前专注于 Android 开发,主要分享 Android开发相关知识和一些相关的优秀文章,包括个人总结,职场经验等。

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3