public class ReadPic {
//输入起始时间,格式:yyyy-MM-dd HH:mm:ss
private static String startTime = "2021-7-30 2:2:2";
//输入结束时间,格式:yyyy-MM-dd HH:mm:ss
private static String endTime = "2021-7-30 23:23:23";
//输入来源文件路径
private static String sourceUrl = "E:\\picture";
//输入目标文件路径
private static String targetUrl = "E:\\pictureSort";
private final static String FS = System.getProperty("file.separator");
public static void main(String[] args) throws ParseException {
Date starDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(startTime);
Date endDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(endTime);
File file = new File(sourceUrl);
File [] files = file.listFiles();
try {
long startMillisTime=System.currentTimeMillis(); //获取开始时间
for (int i = 0; i < files.length; i++){
File file1 = files[i];
String picName = file1.getName(); //根据后缀判断
String hz = picName.substring(picName.lastIndexOf(".") + 1).toLowerCase();
//如果是图片则执行
if (hz.equals("jpg") || hz.equals("png") || hz.equals("jpeg")
|| hz.equals("gif") || hz.equals("jfif") || hz.equals("webp")) {
File jpegFile = new File(sourceUrl + file.separator + picName);
Metadata metadata = ImageMetadataReader.readMetadata(jpegFile);
Iterator<Directory> it = metadata.getDirectories().iterator();
//遍历目录
while (it.hasNext()) {
Directory exif = it.next();
Iterator<Tag> tags = exif.getTags().iterator();
//遍历目录下标签
while (tags.hasNext()) {
Tag tag = (Tag) tags.next();
String tagName = tag.getTagName();
//取时间标签
if (tagName.equals("File Modified Date")) {
String date = tag.getDescription();
//因为时间格式为 “星期一 七月 26 10:37:58 +08:00 2021” 直接取时分秒 “10:37:58”
//年
String n = date.substring(date.lastIndexOf(" ") + 1);
//月
int y = date.substring(date.indexOf(" ") + 1, date.indexOf("月") + 1).equals("七月")
? 7
: 8;
//日
String day[] = date.split(" ");
String d = day[2];
//时分秒
String sfm = date.substring(10, 18);
//拼接时间,后续比较
String picTime = n + "-" + y + "-" + d + " " + sfm;
Date picDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(picTime);
if (picDate.before(endDate) && picDate.after(starDate)) {
//如果没有文件夹,则创建
File dirfile = new File(targetUrl);
if (!dirfile.exists()) {
dirfile.mkdirs();
}
//读取文件(字节流)
InputStream in = new FileInputStream(sourceUrl + "/" + picName);
//写入相应的文件
OutputStream out = new FileOutputStream(targetUrl + file.separator + picName);
//读取数据
//一次性取多少字节
byte[] bytes = new byte[20480];
//接受读取的内容(r就代表的相关数据,只不过是数字的形式)
int r = -1;
//循环取出数据
while ((r = in.read(bytes, 0, bytes.length)) != -1) {
//写入相关文件
out.write(bytes, 0, r);
}
//关闭流
in.close();
out.close();
//删除文件来源
File picfile = new File(sourceUrl + FS + picName);
picfile.delete();
}
}
}
}
}
}
long endMillisTime=System.currentTimeMillis(); //获取结束时间
System.out.println("执行成功,用时"+(endMillisTime-startMillisTime)+"毫秒");
} catch (Exception e) {
e.printStackTrace();
}
}
}
java实现图片文件,自定义时间段分类转移
最新推荐文章于 2024-09-14 18:46:05 发布