2009年6月3日水曜日

AWT オブジェクトのアクセス

オブジェクトの書き出し
 ①FileOutputStreamインスタンスの作成

FileOutputStream os = new FileOutputStream(ファイル名)

 ②FileOutputStreamを元にBufferedOutputStreamインスタンスの作成

BufferedOutputStream = new BufferedOutputStream(FileOutputStreamインスタンス);

 ③BufferedOutputStreamを元にXMLEncoderインスタンスの作成

XMLEncoder = new XMLEncoder(BufferedOutputStreamインスタンス);

 ④データを書き込む

xml.writeObject(TextAreaインスタンス);

 ⑤読み出しが終了したらcloseメソッドによりストリームを開放する

xml.close()


オブジェクトの読み込み
 ①FileInputStreamインスタンスの作成

FileInputStream is = new FileInputStream(ファイル名)

 ②FileInputStreamを元にBufferedInputStreamインスタンスの作成

BufferedInputStream = new BufferedInputStream(FileInputStreamインスタンス);

 ③BufferedInputStreamを元にXMLDecoderインスタンスの作成

XMLDecoder = new XMLDecoder(BufferedInputStreamインスタンス);

 ④データを読み込む

TextArea newTA = (TextArea)xml.readObject();

 ⑤読み出しが終了したらcloseメソッドによりストリームを開放する

xml.close()



例.

public class ObjectApp extends Frame implements ActionListener{

 Button b1,b2;
 TextArea ta;

 public static void main(String[] args) {
  new ObjectApp();
 }
 public ObjectApp(){
  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(){
  FileInputStream is = null;
  BufferedInputStream bis = null;
  XMLDecoder xml = null;
  try{
   is = new FileInputStream("sample.txt");
   bis = new BufferedInputStream(is);
   xml = new XMLDecoder(bis);
   TextArea newTA = (TextArea)xml.readObject();
   this.remove(ta);
   ta = null;
   ta = newTA;
   this.add(ta,BorderLayout.CENTER);
   this.doLayout();
  } catch(Exception ex){
   ex.printStackTrace();
  } finally {
   try{
    xml.close();
   } catch(Exception ex2){
    ex2.printStackTrace();
   }
  }
 }

 public void save(){
  FileOutputStream os = null;
  BufferedOutputStream bos = null;
  XMLEncoder xml = null;
  try{
   os = new FileOutputStream("sample.txt");
   bos = new BufferedOutputStream(os);
   xml = new XMLEncoder(bos);
   xml.writeObject(ta);
   Random rnd = new Random();
   int r = rnd.nextInt(256);
   int g = rnd.nextInt(256);
   int b = rnd.nextInt(256);
   ta.setForeground(new Color(r,g,b));
  } catch(Exception ex){
   ex.printStackTrace();
  } finally {
   try{
    xml.close();
   } catch (Exception ex2){
    ex2.printStackTrace();
   }
  }
 }
}

0 件のコメント:

コメントを投稿