Javaでjava.io.Fileクラスを使ったプログラムの紹介
今日は2つ目のプログラムを作成しました。このプログラムは、java.io.Fileクラスを活用したものです。
このプログラムでは、指定したファイルパスを読み込んでFileクラスのオブジェクトを生成し、その後、そのファイルの名前とサイズを出力します。
java.io.Fileクラスは非常に便利なクラスです。このクラスを使っていると、以前取り組んだ最初のC言語プロジェクトを思い出しました。そのプロジェクトでは、CSVファイルのサイズを取得する必要がありました。その際、ChatGPTを利用してコードを生成したところ、ファイルポインタを使った実装が提案されました。しかし、私はファイルポインタの操作にあまり慣れておらず、その結果、プログラム中にバグが発生しました。その後、このバグを修正する際、開発リーダーがPOSIXのstat構造体を使用する方法を提案してくれました。このstat構造体の役割は、java.io.Fileクラスの役割と非常によく似ています。
このプログラムの中心となるコードは以下の1行です。
File file = new File(args[0]);
つまり、Fileクラスのオブジェクトを生成するには、対象ファイルのパスをFileクラスのコンストラクタに渡すだけで良いのです。
fileオブジェクトを生成した後は、Fileクラスのメソッドを呼び出すことで、そのfileオブジェクトからファイル名やファイルサイズを取得できます。
ただし、この中心的なコードを使う際には、以下のようなチェックが必要です。
args[0]が存在すること
args[0]が存在しない場合、配列のインデックスアウトオブバウンド例外がスローされます。args[0]が一意であること
プログラムの最初で、argsの長さを確認する必要があります。長さが1である場合にのみ、処理を進めます。対象ファイルのパスが存在すること
対象ファイルのパスが存在しない場合でも、fileオブジェクトの初期化時にはエラーは発生しません。しかし、file.exists()メソッドはfalseを返します。
これらのチェックを以下のように分けて実施します。
- 1と2については、コマンドライン引数の入力チェックを行います。
- 3については、ファイルの存在チェックを行います。
これらを踏まえることで、最終的に完成したプログラムが出来上がります。
このプログラムを通じて、java.io.Fileクラスの便利さを改めて実感しました。今後もこのような便利なクラスを活用して、より効率的なプログラムを作成していきたいと思います。