・   「Java入門」実習 第9回

入出力とファイルの取り扱い

java.ioパッケージのストリームのクラスと Fileクラスの機能を用いて、 ファイルや標準入出力への入出力やファイルシステムを操作するサンプルを紹介します。


・ 基本課題1:「ファイルへの入出力」

  1. ソースファイル CpCommand.java (教科書 P.173)を作成しなさい。
  2. コンパイルできたら、たとえば次のようにして実行し、結果を確認しなさい。
    
    java  CpCommand  CpCommand.java  CpCommand.bak
    
    
  3. ファイルが正しくコピーされたか確認しなさい。
    
    cat  CpCommand.bak      (Linuxの場合)
    type  CpCommand.bak     (Windowsの場合)
    
    

・ 基本課題2:「ファイルへの入出力(その2)」

  1. ソースファイル CpCommand2.java (教科書 P.175-6)を作成しなさい。
  2. コンパイルできたら、先のサンプルと同じ機能を持つことを確認しなさい。
・ 基本課題3:「テキストの入出力」

  1. ソースファイル CatCommand.java (教科書 P.177-8)を作成しなさい。
  2. コンパイルできたら、たとえば次のようにして実行し、結果を確認しなさい。
    
    java  CatCommand  CpCommand.java
    java  CatCommand  CatCommand.java
    
    
・ 基本課題4:「行単位のバッファリング」

  1. ソースファイル CatCommand2.java (教科書 P.178-9)を作成しなさい。
  2. コンパイルできたら、先のサンプルと同じ機能を持つことを確認しなさい。

・ 基本課題5:「ディレクトリ情報の取得」

  1. ソースファイル LsCommand.java (教科書 P.187-8)を作成しなさい。
  2. コンパイルできたら、たとえば次のようにして実行し、結果を確認しなさい。
    
    java  LsCommand
    java  LsCommand  ..
    java  LsCommand  /etc    (Linuxの場合)
    java  LsCommand  C:\     (Windowsの場合)
    
    

・ 基本課題6:「Fileのオブジェクトの再帰的な生成」

  1. ソースファイル FindCommand.java (教科書 P.188-90)を作成しなさい。
  2. コンパイルできたら、たとえば次のようにして実行し、結果を確認しなさい。 (ディレクトリを移動してもプログラムを呼び出せるように、 最初に CLASSPATHの設定を行います。この方法はシステムによって異なります。)
    
    CLASSPATH=~:. ; export CLASSPATH  (Linux bsh系 の場合)
    set  CLASSPATH=Z:\;.              (Windowsの場合)
    java  FindCommand  FindCommand.java
    cd  ..
    java  FindCommand  FindCommand.java
    java  FindCommand  mbox
    
    

・ レポート課題:
ここまでの課題が終わった人は、下記の項目を tatsuo宛のメール で報告しなさい。(Subjectは java9)

  1. Linuxで、 ディレクトリ /usr/local/jdk1.2.2/src に移動しなさい。 課題6:のプログラム(FindCommand)を用いて、 このディレクトリの下のどこに "Object.java" という名前のファイルが あるか調べなさい。 (複数存在する場合には、その場所をすべて答えてください。)

・ 応用課題1:「オブジェクトの入出力」
Serializabiryの機能を用いてオブジェクトを直接ファイルに保存したり、 ファイルから読み込んだりしてみましょう。

  1. ソースファイル Student.java (教科書 P.181)と StudentSaver.java (教科書 P.182-3)と StudentLoader.java (教科書 P.184-5)を作成しなさい。
  2. 各プログラムをコンパイルしなさい。
  3. StudentSaverを実行し、数名分のデータをキーボードから入力しなさい (架空のデータでもかまわない)。
  4. ファイル Student.ser が存在することを確認しなさい。
  5. このファイルはバイナリ形式なので、通常のエディタでは内容を見ることが できません。UNIXの場合ならば od コマンドを用いて中身を調べることができます。
    
    od  -c  Student.ser      (Linuxの場合)
    
    
  6. StudentLoaderを実行し、入力されたデータが表示されることを確認しなさい。
・ 応用課題2:「odコマンドの作成」
今回勉強したことを使えば odコマンドと同じような機能を持つプログラムを Javaによって開発することも可能です。 (バイナリファイルを読み込み、アスキーコードの文字列として整形して表示する。) うまくできれば、UNIX上だけでなく Windows上でもバイナリファイルの内容を手軽に 調べることが可能になります。 たとえば、次のようにして実行すると、上の odコマンドと同様の結果が得られる ようにしてください。 (ヒントです)


java  OdCommand  Student.java
java  OdCommand  Student.class
java  OdCommand  Student.ser


実習の目次   今週の講義の内容