[Java]檔案整理工具-照片整理

有時照片從相機複製下來後懶的整理,時間一久就越來越不好查看到底是在何時拍的,這時候就可以利用這個程式來做分類整理,主要是利用遞迴的方法一直向指定目錄下的每一層找尋圖片檔,再複製至以年月為目錄的分類資料夾。

程式的作法大概是先取得目錄列表,再判斷每一個檔案是目錄或是檔案,如果是檔案,檢查是否為jpg檔,如果是檔案,則取得其修改日期的年月,建立存放目錄的年月目錄資料夾,並複製檔案至此資料夾,如果是目錄,則迴丟至此function,製作遞迴效果。

ImgFilter.png




原始碼如下:

package yku;
public class FilterIMG {
// 存放目錄
private static final String DirMove = "d:/mypic";
public static void main(String args[]) throws java.io.IOException {
// if (args.length == 0)
// return;
// 來源
String source = "d:/backup/yku/picture";
java.io.File SetDir = new java.io.File(DirMove);
if (!SetDir.exists()) {
SetDir.mkdirs();
}
java.io.File f = new java.io.File(source);
if (f.exists()) {
workup(f, SetDir);
}
}
public static void workup(java.io.File f, java.io.File SetDir)
throws java.io.IOException {
if (!f.exists())
return;
if (!SetDir.exists())
return;
java.util.Calendar FileTime = java.util.Calendar.getInstance();
java.io.File[] list = f.listFiles();
for (int i = 0; i < list.length; i++) {
System.out.println(list[i].getName());
// 是檔案而且又是jpg的檔案
if (list[i].isFile()
&& list[i].getName().toLowerCase().endsWith(".jpg")) {
// 取得檔案的修改時間
FileTime.setTimeInMillis(list[i].lastModified());
// 年月資料夾的路徑
java.io.File to = new java.io.File(SetDir.getPath()
+ java.io.File.separator
+ FileTime.get(java.util.Calendar.YEAR)
+ java.io.File.separator
+ String.format("%02d", FileTime
.get(java.util.Calendar.MONTH) + 1));
// 如果年月資料夾不存在的話則建立
if (!to.exists())
to.mkdirs();
copyto(list[i], to);
} else if (list[i].isDirectory()) {
// 利用遞迴來處理
workup(list[i], SetDir);
}
}
}
// 複製檔案
public static void copyto(java.io.File srcFile, java.io.File dstFile)
throws java.io.IOException {
if (!srcFile.isFile())
throw new java.io.IOException("copy時來源錯誤!!!");
// 複製目的地如果是資料夾,則把來源檔案名稱當然目的地的檔案名稱
if (dstFile.isDirectory()) {
dstFile = new java.io.File(dstFile.getAbsolutePath()
+ java.io.File.separator + srcFile.getName());
}
if (dstFile.exists())// 不覆蓋
{
// dstFile.delete();
return;
}
// 以下為複製作業
java.io.BufferedInputStream in = new java.io.BufferedInputStream(
new java.io.FileInputStream(srcFile));
java.io.BufferedOutputStream out = new java.io.BufferedOutputStream(
new java.io.FileOutputStream(dstFile));
byte[] tmp = new byte[1024];
while (in.read(tmp) != -1)
{
out.write(tmp);
}
in.close();
out.close();
}
}

原始碼包裝下載-Eclipse格式

 

One thought to “[Java]檔案整理工具-照片整理”

發表迴響