Beans でデータを共有

C:\DATA\Java2\01Dos\>java Share_A
入力してください:
> 000
000
share.txt が見つかりません
str_a の値は 000
str_b の値は null
> 111
111
str_a の値は 111
str_b の値は aaa
> 222
222
str_a の値は 222
str_b の値は bbb
> ^Z
 -- Press any key to exit (Input "c" to continue) --

Beans を使って、複数のプログラム間でデータを共有します。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして ShareBean.java の名前で保存して下さい。
    Serializable を設定した簡単な Beans 仕様の Object Class です。
    //★ Beans の共有テスト    前田 稔
    import java.io.Serializable;
    
    public class ShareBean implements Serializable
    {   private String str_a,str_b;
        public void setStr_a(String str) { this.str_a = str; } 
        public void setStr_b(String str) { this.str_b = str; } 
        public String getStr_a() { return this.str_a; }
        public String getStr_b() { return this.str_b; }
    }
    
  2. ShareBean を使ってデータを共有する Main Program です。
    メモ帳などでタイプして Share_A.java の名前で保存して下さい。
    //★ ShareBean データを共有(A)    前田 稔
    //   入力の終わりは Ctrl + Z です。
    import java.io.*;
    
    public class Share_A
    {   static  ShareBean   bean;
    
        public static void main(String args[])
        {   String  str;
            bean= new ShareBean();
            try
            {   BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
                System.out.println("入力してください:");
                System.out.print("> ");
                while((str=input.readLine()) != null)
                {   System.out.println(str);
                    Load();
                    bean.setStr_a(str);
                    Save();
                    System.out.println("str_a の値は " + bean.getStr_a());
                    System.out.println("str_b の値は " + bean.getStr_b());
                    System.out.print("> ");
                }
            }
            catch(IOException e)
            {   e.printStackTrace();
                System.exit(1);
            }
        }
    
        // オブジェクトの読み込み
        public static void Load()
        {   try
            {   FileInputStream inFile = new FileInputStream("share.txt");
                ObjectInputStream in = new ObjectInputStream(inFile);
                bean = (ShareBean)in.readObject();
                in.close();
                inFile.close();
            }
            catch(Exception ex)
            {   System.out.println("share.txt が見つかりません");   }
        }
    
        //  オブジェクトをファイルに保存
        public static void Save()
        {   try
            {   FileOutputStream outFile = new FileOutputStream("share.txt");
                ObjectOutputStream out = new ObjectOutputStream(outFile);
                out.writeObject(bean);
                out.close();
                outFile.close();
            }
            catch(Exception ex)
            {   ex.printStackTrace();   }
        }
    }
    
  3. ShareBean を使ってデータを共有する、二個目の Main Program です。
    メモ帳などでタイプして Share_B.java の名前で保存して下さい。
    Share_A.java と Share_B.java はほとんど同じで、Class の名前と bean.setStr_b(str); が違うだけです。
    //★ ShareBean データを共有(B)    前田 稔
    import java.io.*;
    
    public class Share_B
    {   static  ShareBean   bean;
    
             ・・・ Share_A.java と同じ ・・・
    
                    Load();
                    bean.setStr_b(str);
                    Save();
    
             ・・・ Share_A.java と同じ ・・・
    
  4. Java のソースプログラムをコンパイルして、Object を作成して下さい。
    Share_A, Share_B を同時に開いて、交互にタイプ入力して下さい。
    A と B のプログラムから入力された文字列が Beans を通じて共有されます。

プログラムの説明

  1. ShareBean.java では、String 型で二個のプロパティの領域を定義しています。
    str_a が Share_A 用で、 str_b が Share_B 用です。
    str_a, str_b に対して、getメソッドと setメソッドを定義します。
    public class ShareBean implements Serializable
    {   private String str_a,str_b;
    
  2. Share_A.java, Share_B.java ではコンソールから文字列をタイプ入力します。
    Load() で現在の ShareBean をロードします。
    それぞれの領域に文字列を格納して Save() で保存します。
    次に ShareBean の str_a, str_b に格納されている文字列を印字します。
                {   System.out.println(str);
                    Load();
                    bean.setStr_a(str);
                    Save();
                    System.out.println("str_a の値は " + bean.getStr_a());
                    System.out.println("str_b の値は " + bean.getStr_b());
    
  3. Share_A を起動して、コンソールから適当な文字列をタイプします。
    始めて起動したときは "share.txt" が作成されていないので、次のメッセージが表示されますが続けて下さい。
    C:\DATA\Java2\01Dos\>java Share_A
    入力してください:
    > 000
    000
    share.txt が見つかりません
  4. Share_A, Share_B を同時に開いて、交互にタイプ入力して下さい。
    A と B のプログラムから入力された文字列が Beans を通じて共有されます。
    同じ要領でプログラムが増えてもデータを共有することが出来ます。
  5. このプログラムは Serializable を設定して Object をファイルに保存しています。
    Share_A, Share_B では、設定したプロパティが常に最新の値になるようにファイルを更新します。
    従って、実質的にはファイルを使ったデータの共用と言えるでしょうか。
    Beans の説明は Beans の基礎 を参照して下さい。
    応用プログラムは 情報を共有する などを参照して下さい。

超初心者のプログラム入門(Java2)