・   「Java言語」実習 第15回

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

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


・ 準備(学内向け):
各自のJavaの課題の作業用のディレクトリ ~/www/java に移動しなさいなさい。 その中で以下の作業を行いなさい。


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

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

・ 基本課題2:「行単位のバッファリング」

  1. ソースファイル CatCommand.java を作成しなさい。
  2. コンパイルできたら、たとえば次のようにして実行し、結果を確認しなさい。
    
    java  CatCommand  CpCommand.java
    java  CatCommand  CatCommand.java
    
    

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

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

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

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

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

  1. ディレクトリ /home/net/www1/tatsuo/www/kougi98 に移動しなさい。 課題4:のプログラム(FindCommand)を用いて、 このディレクトリの下のどこに "fujiki.jpg" という名前のファイルが あるか調べなさい。 (多数存在する場合には、その場所をすべて答えてください。)

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

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


java  OdCommand  Gakusei.java
java  OdCommand  Gakusei.class
java  OdCommand  Gakusei.ser


・ 特別レポート課題(学内用):
応用課題2:の OdCommand.java を完成させ、そのソースファイルを tatsuo宛のメール で報告しなさい。(Subjectは javareport) ・
この課題の提出期限は 10/12(月)とします。 (ヒントです)


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