①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 件のコメント:
コメントを投稿