- 浏览: 345509 次
- 性别:
- 来自: 大西洋底
文章分类
最新评论
-
jfztaq:
问题果然解决了,太感谢了
Chrome经常性的“喔唷,崩溃了”问题 -
saintor:
因为不是每个subclass都执行Cloneable吧。
Java Object类的方法们 -
337240552:
写的不错 这个东西晕死一堆人。
对JavaScript中原型的理解 -
liang86liang:
jkleeo 写道很深奥啊.
C/CPP只有在大学的时候听说过 ...
Windows下用Eclipse搭建C/C++开发环境 -
ahong520:
看来你也是四国军棋爱好者,啥时候切磋一下
四国军棋游戏V0.3.5(未完成)
在给小宝拍的照片中,有我手机拍的,有媳妇手机拍的,还有相机拍的,于是每个月给小宝选的30张照片中,文件命名很乱。现在根据文件修改属性,统一按时间戳命名,精确到秒。
程序如下:
(程序规模小,因此未考虑潜在的重名问题)
即使就是今天,还是遇到了同名的问题,可见,作为一个合格而严谨的代码工,一定不能心存任何侥幸。程序更新如下,对于同一秒拍摄的照片,使用毫秒级的时间戳加6位随机整数来命名,以此解决上面程序的同名问题:
-------------------------------------------------------
程序再次更新,源于变态的apple使用iTunes导出文件,导致modified date time跟拍摄时间不一致。下面程序读取Exif信息做为拍摄时间,需要导入外部JAR包 metadata-extractor-2.4.0-beta-1.jar
程序如下:
(程序规模小,因此未考虑潜在的重名问题)
import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; public class UpdateFileName { private static final String dir = "C:/Documents and Settings/Administrator/My Documents/My Pictures/dir/"; public static void updateName() { File fdir = new File(dir); File[] list = fdir.listFiles(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH.mm.ss"); for (File f : list) { if (f.isFile() && f.getName().toUpperCase().endsWith(".JPG")) { Date date = new Date(f.lastModified()); String newName = sdf.format(date); System.out.print(f.getName() + "\t"); System.out.println(newName + ".jpg"); f.renameTo(new File(dir + newName + ".jpg")); } } } /** * @param args */ public static void main(String[] args) { updateName(); } }
即使就是今天,还是遇到了同名的问题,可见,作为一个合格而严谨的代码工,一定不能心存任何侥幸。程序更新如下,对于同一秒拍摄的照片,使用毫秒级的时间戳加6位随机整数来命名,以此解决上面程序的同名问题:
import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Random; public class UpdateFileName { private static final String PROCESS_DIR = "C:/Documents and Settings/Administrator/My Documents/My Pictures/dir/"; private static final Random RANDOM = new Random(); /** * update the picture file names */ public static void updateName() { File fdir = new File(PROCESS_DIR); File[] list = fdir.listFiles(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH.mm.ss"); // 需要考虑重名文件问题 HashMap<String, Integer> fileAllNames = new HashMap<String, Integer>(); SimpleDateFormat sdfAnother = new SimpleDateFormat("yyyy-MM-dd HH.mm.ss.SSS"); for (File f : list) { if (f.isFile() && f.getName().toUpperCase().endsWith(".JPG")) { Date date = new Date(f.lastModified()); String newName = sdf.format(date); if (fileAllNames.containsKey(newName) ){ // 有重名的 newName = sdfAnother.format(date); int rint = RANDOM.nextInt(999999-100000+1)+100000 ; // get a number between [a,b] newName = newName + "."+ String.valueOf(rint); } fileAllNames.put(newName, 1); System.out.print(f.getName() + "\t\t\t"); System.out.println(newName + ".jpg"); boolean succeed = f.renameTo(new File(PROCESS_DIR + newName + ".jpg")); if (!succeed) { System.err.println("Rename failed: New File Name - " + newName); } } } } /** * @param args */ public static void main(String[] args) { updateName(); } }
-------------------------------------------------------
程序再次更新,源于变态的apple使用iTunes导出文件,导致modified date time跟拍摄时间不一致。下面程序读取Exif信息做为拍摄时间,需要导入外部JAR包 metadata-extractor-2.4.0-beta-1.jar
import java.io.File; import java.util.HashMap; import java.util.Random; import com.drew.imaging.jpeg.JpegMetadataReader; import com.drew.imaging.jpeg.JpegProcessingException; import com.drew.metadata.Directory; import com.drew.metadata.Metadata; import com.drew.metadata.MetadataException; import com.drew.metadata.exif.ExifDirectory; public class UpdateJPGNameWithTimeStamp { private static final String PROCESS_DIR = "C:/Users/IBM_ADMIN/Pictures/11/"; private static final Random RANDOM = new Random(); private static String model = ""; public static String findEXIFDateTime(File jpegFile) { Metadata metadata; try { metadata = JpegMetadataReader.readMetadata(jpegFile); Directory exif = metadata.getDirectory(ExifDirectory.class); String newname = exif .getDescription(ExifDirectory.TAG_DATETIME_ORIGINAL); // System.out.println(newname); if (newname!=null && newname.contains(":")){ newname = newname.replaceFirst(":", "-"); newname = newname.replaceFirst(":", "-"); newname = newname.replaceFirst(":", "."); newname = newname.replaceFirst(":", "."); newname = newname.replaceFirst(":", "."); } model = exif.getDescription(ExifDirectory.TAG_MODEL); // System.out.println(exif.getDescription(ExifDirectory.TAG_EXIF_VERSION)); return newname; } catch (JpegProcessingException e) { e.printStackTrace(); } catch (MetadataException e) { e.printStackTrace(); } return null; } public static void updateAll() { File fdir = new File(PROCESS_DIR); File[] list = fdir.listFiles(); // 需要考虑重名文件问题 HashMap<String, Integer> fileAllNames = new HashMap<String, Integer>(); for (File f : list) { if (f.isFile() && f.getName().toUpperCase().endsWith(".JPG")) { String newName = findEXIFDateTime(f); if (newName == null || newName.equals("")) { continue; } if (fileAllNames.containsKey(newName + ".jpg")) { // 有重名的 int rint = RANDOM.nextInt(999999 - 100000 + 1) + 100000; newName = newName + "." + String.valueOf(rint); } newName = newName + ".jpg"; fileAllNames.put(newName, 1); System.out.print("Old name: " + f.getName() + "\t"); System.out.print("New name: " + newName + "\t"); System.out.println("by " + model); boolean succeed = f.renameTo(new File(PROCESS_DIR + newName)); if (!succeed) { System.err.println("Rename failed: New File Name - " + newName); } } } System.out.println("Done! Totally updated " + fileAllNames.keySet().size() ); } /** * @param args */ public static void main(String[] args) { UpdateJPGNameWithTimeStamp.updateAll(); } }
发表评论
-
文件分割与合并
2020-03-19 20:59 264package com.test.filestool; ... -
盒子里面另一个是红球的概率问题
2019-05-08 09:27 775问题如下:引用有三个盒子,其中一个里面是两个红球,一个里面是两 ... -
Mac OS X 下运行Java standalone 连接 Notes
2017-11-27 12:32 791Mac OS X 下运行Java standalone 连接 ... -
随机密码生成
2015-09-10 10:19 792import java.util.Random; p ... -
Java 处理mail subject
2015-06-15 21:16 1083对于mail subject 前面烦人的各种Re: 或Fw: ... -
有趣的“生命游戏”
2013-04-04 10:56 1059“生命游戏” 本世纪70年代,人们曾疯魔一种被称作“生命游戏” ... -
有趣的统计英文单词频率的例子
2013-03-02 00:22 1961统计一篇英文文档或一本小说中单词出现的次数,下面代码使用的是英 ... -
有趣的统计英文字母频率的例子
2013-03-01 01:13 1406统计的是英文版"悲惨世界",代码如下,使用 ... -
有趣的将一个十进制整数转换成二进制输出的算法
2013-02-27 00:20 1353原题是将一个十进制整数转换成二进制输出。 分析:任何数可以表 ... -
关于Java的UUID
2012-08-30 18:40 8324UUID或者UNID或者UID,是一个统一唯一标识,可以用来标 ... -
关于Java中的哈希表 HashMap,Hashtable 等
2012-07-27 10:10 2794首先来了解一下基本概念 所谓哈希表(Hash Table,又 ... -
关于Java中的哈希表
2012-07-27 10:01 1关于Java中的哈希表首先 ... -
关于Java的“浅拷贝”和“深拷贝” (clone method)
2012-07-24 14:31 1304这是关于Java的clone, 一些知道的和不知道的。 1. ... -
从某网站下载MP3的例子
2012-05-29 23:14 1406从某网站下载MP3的例子。为安全起见,将网站信息匿了。 ... -
统计项目中Java文件数和Java代码行数
2010-12-25 11:51 6477其实就是使用递归遍历目录下所有文件 import jav ... -
Java循环内goto语句的替代方案
2010-12-12 23:04 3252众所周知,Java虚拟机根本没有实现goto关键字。我的一个函 ... -
Struts 2 + Spring 2 + JPA + AJAX示例
2009-09-12 21:18 2586这个例子其实就是来自Struts 2的文档,但是原例子针对的是 ... -
Java线程编程学习笔记(二)
2009-06-11 17:23 1336这里是上一篇:Java线程编程学习笔记(一) Java线程编 ... -
Java线程编程学习笔记(一)
2009-04-09 10:46 2197"Java Thread Programming&q ... -
学习Spring 2.5和Hibernate 3的代码示例
2008-06-06 16:01 2518代码内容(每个包都是一个独立的应用,彼此不干涉): 一个最小 ...
相关推荐
总结来说,批量修改照片名字工具是针对需要批量整理照片命名的用户设计的,能够有效地对大量jpg格式的图片进行快速重命名,提升工作效率。用户在下载并运行.exe程序后,应参考Readme文件来了解具体使用方法。
批量修改文件名的能力可以极大地提高效率,避免手动更改每一个文件的繁琐过程。本文将深入探讨批量修改文件名的软件及其工作原理,以及如何利用这样的工具来优化文件管理。 批量修改文件名软件是一种专门设计用于...
在日常的计算机操作中,有时我们需要对大量的文件进行统一的命名修改,比如整理照片、归档文档等。这时,批量更改文件名字的功能就显得尤为重要。批量改名可以帮助我们节省大量手动操作的时间,提高工作效率,尤其在...
"批量修改图片照片文件名小工具"正是为解决这个问题而设计的实用软件。 批量修改图片文件名的功能在于能够高效地自动化文件重命名过程。通过指定规则,如添加前缀、后缀或者按照特定模式(如日期、编号)来重新命名...
2. **文件预览**:在进行批量修改前,一个好的工具会提供预览功能,让用户在实际修改前看到即将更改的文件名,这样可以避免误改重要文件。 3. **命名模式**:批量修改工具通常允许用户选择不同的命名模式,如数字...
在日常的计算机操作中,有时我们需要对大量的文件进行统一的命名操作,比如批量更改文件名、替换文件名或采用批量智能命名方式。这样的需求在处理照片、文档、音乐等大量文件时尤为常见,能有效提高工作效率。下面...
首先,批量修改文件名是指通过一个自动化工具或程序,一次性对多个文件进行命名规则的更改,而不是逐一手动操作。这在处理大量具有相似命名模式的文件时尤其有用,比如照片、文档或者音乐库等。批量操作可以是删除...
如果网站中的许多文件名需要更改,批量修改文件名工具可以快速完成这项任务,避免了逐个文件打开和修改的繁琐步骤。 批量修改文件名的软件通常包含以下特性: 1. **多种命名规则**:支持预设的命名规则,如数字递增...
"文件名批量修改器"就是为了解决这个问题而设计的工具。它允许用户按照自己的需求,快速、高效地修改多个文件的名称,避免了手动操作带来的繁琐和耗时。 批量文件名修改器的核心功能在于其自定义命名规则的能力。...
"批量修改文件名2.73"是一款专为此目的设计的软件,它允许用户一次性对多个文件进行命名操作,节省了手动逐个更改的繁琐过程。 批量更名软件的核心功能包括但不限于以下几点: 1. **模板化命名**:用户可以设定一...
标题提到的“批量修改照片大小、裁剪图片的小软件”是一种实用的工具,它能帮助用户快速地调整照片尺寸、进行裁剪以及其他可能的图像处理操作。描述中的“好的照片批量处理工具”进一步强调了软件的高效性和易用性。...
了解以上知识后,你就可以根据需要创建自己的批处理脚本来进行文件扩展名的批量修改了。在实际应用中,批处理脚本还可以结合其他命令进行更复杂的操作,如文件查找、复制、删除等,灵活度非常高。在进行此类操作时,...
在Windows 7操作系统中,管理和组织大量的照片文件可以变得相当简单,尤其是当你需要批量更改照片文件的名字时。这个系统内置的功能使得用户无需依赖第三方软件就能有效地整理和命名照片。以下是如何在Windows 7中...
批量文件名修改是指对一组文件进行统一的命名规则更改,例如将所有文件的名字前面加上日期、序列号,或者替换掉某些特定字符。这种功能通常被用在整理下载的文件、照片库管理、项目文档归档等场景。要实现批量文件名...
7. 批量裁剪:统一裁剪照片至特定比例或尺寸。 8. 添加边框或特效:应用预设的边框样式或滤镜效果。 9. 生成缩略图:快速创建一组缩略图,便于预览和展示。 总的来说,“数码照片批量处理工具 .rar”提供了一个全面...
4. 预览更改后的文件名,确认无误后执行批量修改操作。 总的来说,批量修改文件名是提高文件管理效率的一个利器,尤其对于那些需要处理大量文件的用户而言。通过这款名为"refilesname"的应用,即使是对电脑操作不太...
然后对水印文字或者图片进行设置,接下来设置水印的透明度和位置,单击“路径设置”区域的“浏览”按钮,对水印图片的保存路径进行设置,全部设置完成后,单击“执行”按钮,即可批量为选择的图片添加文字或者图片...
一键批量改文件或照片改名或后缀名,快速方便,自动解决命名冲突
批量添加水印确保所有图片统一展示公司的标志或摄影师的名字,同时不影响图片的主要内容。 4. **软件工具**: ImageConverterOne可能是用于批量处理图片的工具,它可能提供了用户友好的界面,允许用户设置参数,如...
然后对水印文字或者图片进行设置,接下来设置水印的透明度和位置,单击“路径设置”区域的“浏览”按钮,对水印图片的保存路径进行设置,全部设置完成后,单击“执行”按钮,即可批量为选择的图片添加文字或者图片...