[Java]檔案整理工具-照片整理
有時照片從相機複製下來後懶的整理,時間一久就越來越不好查看到底是在何時拍的,這時候就可以利用這個程式來做分類整理,主要是利用遞迴的方法一直向指定目錄下的每一層找尋圖片檔,再複製至以年月為目錄的分類資料夾。
程式的作法大概是先取得目錄列表,再判斷每一個檔案是目錄或是檔案,如果是檔案,檢查是否為jpg檔,如果是檔案,則取得其修改日期的年月,建立存放目錄的年月目錄資料夾,並複製檔案至此資料夾,如果是目錄,則迴丟至此function,製作遞迴效果。

有時照片從相機複製下來後懶的整理,時間一久就越來越不好查看到底是在何時拍的,這時候就可以利用這個程式來做分類整理,主要是利用遞迴的方法一直向指定目錄下的每一層找尋圖片檔,再複製至以年月為目錄的分類資料夾。
程式的作法大概是先取得目錄列表,再判斷每一個檔案是目錄或是檔案,如果是檔案,檢查是否為jpg檔,如果是檔案,則取得其修改日期的年月,建立存放目錄的年月目錄資料夾,並複製檔案至此資料夾,如果是目錄,則迴丟至此function,製作遞迴效果。

java.net.URLConnection是一個Http Connecion物件,可以用來連接網站,並處理回傳的資訊資料,當然也可以使用socket連線來做這些事情,不過會顯的麻煩多了。
利用java.net.URLConnection可以直接取得response的Status來判斷網站是不存在、連線錯誤、無法存取,而如果需要更詳細的回傳資訊可以增加給於的Header。而如果需要取得網址的ip則可使用java.net.Inet4Address.getByName(網址名稱)。
有一點要注意的是在JDK1.4以前並有沒有setReadTimeout這個函數,所以需要自己實作一個HttpURLConnectionTimeout來操作TimeOut,可以參考Adding Socket Timeout to java.net.URLConnection這一篇。
這是範例的結果:

這是很多在學習Java都會遇到的作業,常在各大論談都有人提出,不過即然是作業了,應該自己學習來的好,可是老師一成不變的作業也說不過去是吧,這裡就提供了數種老師常會用來當作業的迴圈習題,像是印1 2 3 4 5 ,或是印* 星號等,有遇到就再補上。

利用數學式子,運算出1-5及5-1二種不同方向的數,再利用另一個迴圈印出該行的數列長,其中(i+1)/5 是取除5的整數,而(i + 1) %5 是取5的餘數。
程式碼如下:
for(int i = 0 ; i < 9; i ++) { int d = java.lang.Math.abs((i +1)/5 *5 - (i +1)%5); System.out.print(" "); for(int j = 0 ; j < d ; j ++) { System.out.print(j+1); } System.out.println(); }
try catch是專門在處理錯誤事件的,很多程式語言都有這樣子的例外處理方法,Java也不例外,對於新入門的可能會比較少遇到這類型的問題,不過是十分重要的一環。
當程式功能越來越多、越來越大時,try catch的使用可以增加除錯(bug)的速度,try catch也可以使用其特性來製做一些技巧性的功能或判斷,而當使用者在操作期間發現了例外或錯誤,如果丟出一堆程式碼大概會讓使用者不知所為,擷取這些例外或錯誤而丟出使用者容易理解的字串,也是try catch的功能之一。
try裡的敍述句有可能會丟出例外資訊 ( Exception ) ,而丟出的例外資訊 ( Exception ) 型態就可以由catch來取得,做適當的處理。finally則是在try catch完成後會執行的動作,一般都是使用在關閉或則除物件等。
ps.catch取得例外需由小範圍而後大範圍,例如java.lang.NullPointException則需寫在Exception前面,因為NullPointException所能處理的範圍比Exception還小。
