Javaでは、ファイルからバイナリデータを読み込むFileInputStreamクラスが用意され、このクラスを使うとアプリケーションで簡単にファイルの内容を変数や配列に読み込む事が出来ます。今回は、ファイル操作の手始めにファイルの先頭10バイトをbyte配列に読み込んで表示するアプリケーションを作ってみました。 FileInputStream今回使うFileInputStreamは、InputStreamのサブクラスでバイト単位でファイルから読み込むread()メソッドを持っています。このread()メソッドは、引数なしだと1バイト、配列を引数にするとその配列にデータを読み込むようになっていて、配列に読み込む場合は最大で要素数分読み込みます(引数で読み込むバイト数を指定する事も可能)。 ファイルを読み込む時には、まずファイル名を引数にFileInputStreamクラスのコンストラクタを呼び出してFileInputStreamオブジェクトを作ります。そして、read()でデータを読み込んでclose()する、という感じです。この時、エラーが起きると例外を投げてくるのでcatchする必要があります。 例えば、コマンドラインの引数で指定されたファイルからbyte配列datにデータを読み込むなら、以下のようにします。 // ストリーム生成 FileInputStream f=new FileInputStream(args[0]); // データを配列に読み込む f.read(dat); // ストリームクローズ f.close(); この場合は、最大でdatの要素数分のデータが読み込まれるわけですね。実際に読みこんだバイト数を知りたい時は、read()の戻り値を見ればわかります。戻り値が−1なら、途中でファイルの最後に達した事を意味します。 プログラムコンパイルしたJavaアプリケーションを、引数にファイル名を指定して実行するとそのファイルの先頭10バイトを読み込んで表示します。例えば、test.datの先頭10バイトを読み込むなら java ftest test.dat としてください。 |