ここからは、エクスプローラのメニューで見た機能の中から2つの機能を取り上げます。
ちなみに、ここで紹介する内容はエクスプローラが提供している機能に相当するものをJava APIを用いて実現するものです。完全に一致した機能ではないという点に留意してください。
エクスプローラでは、あるディレクトリに含まれるディレクトリおよびファイルの一覧を表示する機能があります。これと同様の機能をJava APIを用いて実現すると、どのようになるのか見てみましょう。
ディレクトリ内のディレクトリおよびファイルの一覧取得やファイルの詳細情報の取得には、java.io.Fileクラスを利用します。
加えて、java.io.FileクラスのメソッドのうちgetAbsolutePathメソッドおよびgetCanonicalPathメソッドの動きを確認するための処理を記述しました。絶対パス名や正規パス名は、java.io.Fileの利用においてよくつまずきやすいところだからです。
このように、複数回のJava API呼び出しおよび組み合わせによって、目的の機能が実現できます。
さらに、入出力処理を実装する場合には、メソッドのパラメータチェックの処理が増える傾向にあります。このサンプルでは、最低限のパラメータチェックを実装しているのにすぎませんが、それでもソースコードのかなりの行数を占めていることを確認してください。
ディレクトリを一覧表示するサンプル | |
|
実行結果の例を示します。
処理対象ディレクトリ[C:\Documents and Settings\iga]。
絶対パス名[C:\Documents and Settings\iga]
正規パス名[C:\Documents and Settings\iga]
2007/04/12 10:50:53 <DIR> .SunDownloadManager
2007/02/14 17:56:36 <DIR> Application Data
2007/08/29 20:45:22 <DIR> Cookies
2007/05/22 08:03:59 dlmgr_.pro
2006/12/22 20:55:20 <DIR> Favorites
2006/08/01 14:57:16 <DIR> Local Settings
2007/08/11 18:07:18 <DIR> My Documents
2007/06/25 10:34:45 <DIR> NetHood
2007/08/30 09:55:59 NTUSER.DAT
2007/08/30 18:30:03 ntuser.dat.LOG
2007/08/30 06:59:52 ntuser.ini
2006/08/01 14:57:16 <DIR> PrintHood
2007/08/30 18:22:43 <DIR> Recent
2007/01/01 08:48:03 <DIR> SendTo
2007/01/05 07:04:03 <DIR> ssh
2006/08/01 15:03:04 <DIR> Templates
2006/12/22 21:06:01 <DIR> UserData
2006/12/23 23:25:22 <DIR> WINDOWS
2007/08/08 22:15:39 <DIR> workspace
2006/12/24 15:19:46 <DIR> スタート メニュー
2007/08/30 09:24:14 <DIR> デスクトップ
この例では、最終更新日時、ディレクトリかファイルか、ディレクトリ・ファイル名を一覧表示するようになっています。
また参考までに、このクラスをテストするためのJUnitソースコードを示します。ここでは、主な異常系のみ、しかもなるべく簡潔に記述してある点に注意してください。現実的なJUnitコードはこれよりずっと多くのテストコードによって実現されるものなのです。
import junit.framework.TestCase; |
ここで、正規パス名とはどういったものであるのかということを確認するために、ディレクトリ名に親ディレクトリを含めるように変更して動作させてみましょう。
public class DirSample { |
この実行結果から、絶対パス名はディレクトリ名に親ディレクトリ表記が含まれたままですが、正規パス名は親ディレクトリ表記を解消したディレクトリへと変わっていることが分かります(正規パス名の内部的処理については、OSによって動作が異なる場合があります)。
処理対象ディレクトリ[C:\Documents and Settings\iga\..]。
絶対パス名[C:\Documents and Settings\iga\..]
正規パス名[C:\Documents and Settings]
2006/12/19 10:50:29 <DIR> Administrator
2006/12/22 20:55:06 <DIR> All Users
……以下省略……
次ページでは、ファイルコピーの実装例を見ていきます。
Copyright © ITmedia, Inc. All Rights Reserved.