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