2009年6月1日月曜日

AWT バイナリファイルのアクセス

バイナリファイルの書き出し
 ①FileOutputStreamインスタンスの作成

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

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

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

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

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

 ④データを書き込む

boolearn 変数 = DataOutputStream.writeBoolean();
char 変数 = DataOutputStream.writeChar();
byte 変数 = DataOutputStream.writeByte();
int 変数 = DataOutputStream.writeInt();  等

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

DataOutputStream.close()


バイナリファイルの読み込み
 ①FileInputStreamインスタンスの作成

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

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

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

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

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

 ④データを読み込む

   boolearn 変数 = DataInputStream.readBoolean();
   char 変数 = DataInputStream.readChar();
   byte 変数 = DataInputStream.readByte();
   int 変数 = DataInputStream.readInt();  等

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

   DataInputStream.close()


例.

 public class BinaryFile extends Frame implements ActionListener{

  Button b1,b2;
  TextArea ta;

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

  public BinaryFile(){
   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;
   DataInputStream dis = null;
   try{
    is = new FileInputStream("sample.txt");
    bis = new BufferedInputStream(is);
    dis = new DataInputStream(bis);
    int r = dis.readInt();
    int g = dis.readInt();
    int b = dis.readInt();
    String s = dis.readUTF();
    ta.setForeground(new Color(r,g,b));
    ta.setText(s);
   } catch(Exception ex){
    ex.printStackTrace();
   } finally {
    try{
     dis.close();
    } catch(Exception ex2){
     ex2.printStackTrace();
    }
   }
  }

  // バイナリファイル書き込み
  public void save(){
   FileOutputStream os = null;
   BufferedOutputStream bos = null;
   DataOutputStream dos = null;
   try{
    os = new FileOutputStream("sample.txt");
    bos = new BufferedOutputStream(os);
    dos = new DataOutputStream(bos);
    Random rnd = new Random();
    Color c = ta.getForeground();
    int r = c.getRed();
    int g = c.getGreen();
    int b = c.getBlue();
    String s = ta.getText();
    dos.writeInt(r);
    dos.writeInt(g);
    dos.writeInt(b);
    dos.writeUTF(s);
    dos.flush();
    r = rnd.nextInt(256);
    g = rnd.nextInt(256);
    b = rnd.nextInt(256);
    ta.setForeground(new Color(r,g,b));
   } catch(Exception ex){
    ex.printStackTrace();
   } finally {
    try{
     dos.close();
    } catch (Exception ex2){
     ex2.printStackTrace();
    }
   }
  }

 }

0 件のコメント:

コメントを投稿