2009年5月29日金曜日

AWT テキストファイルのアクセス

テキストファイルの書き出し
 ①FileWriteインスタンスの作成
 ②FileWriterを元にBufferedWriterインスタンスを作成
 ③BufferedWriterのメソッドを呼び出しテキストを書き出す
 ④バッファ内に残ったデータを全て書き出す
 ⑤書き出しが終了したらcloseメソッドによりストリームを開放する

テキストファイルの読み込み
 ①FileReaderインスタンスを作成
 ②FileReaderを元にBufferedReaderインスタンスを作成
 ③BufferedReaderのメソッドを呼び出しテキストを読み込む
 ④テキストストリームにあるテキストを全て一括して読み込むことは出来ないため一行ずつ読み込みString変数に設定する
 ⑤読み出しが終了したらcloseメソッドによりストリームを開放する

例.

 public class FileioApp extends Frame implements ActionListener{

  private static final long serialVersionUID = 1L;
  Button b1,b2;
  TextArea ta;

  public static void main(String[] args) {
   new FileioApp();
  }

  public FileioApp(){
   this.setSize(300,200);
   ta = new TextArea();
   this.add(ta,BorderLayout.CENTER);
   b1 = new Button("Load");
   b1.addActionListener(this);
   b2 = new Button("Save");
   b2.addActionListener(this);
   Panel p = new Panel();
   p.add(b1);
   p.add(b2);
   this.add(p,BorderLayout.SOUTH);
   this.setVisible(true);
  }

  public void actionPerformed(ActionEvent ev){
   if(ev.getSource() == b1){
    this.load();
   }
   else if(ev.getSource() == b2){
    this.save();
   }
  }

  public void load(){
   FileReader fr = null;
   BufferedReader br = null;
   try{
    fr = new FileReader("sample.txt");
    br = new BufferedReader(fr);
    String str = "";
    String rstr = "";
    while((rstr = br.readLine()) != null){
     str += rstr + "\r\n";
    }
    ta.setText(str);
   } catch(Exception ex){
    ex.printStackTrace();
   } finally {
    try{
     br.close();
    } catch(Exception ex2){
     ex2.printStackTrace();
    }
   }
  }

  public void save(){
   FileWriter fw = null;
   BufferedWriter bw = null;
   try{
    fw = new FileWriter("sample.txt");
    bw = new BufferedWriter(fw);
    bw.write(ta.getText());
    bw.flush();
   } catch(Exception ex){
    ex.printStackTrace();
   } finally {
    try{
     bw.close();
    } catch (Exception ex2){
     ex2.printStackTrace();
    }
   }
  }
 }

0 件のコメント:

コメントを投稿