聊天记录的保存问题?
package myprojects.chat;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
import java.io.*;
class Chat extends Frame{
List lst=new List(15);
TextField tfIP=new TextField(15);
TextField tfData=new TextField(20);
JButton saveButton=new JButton("存储");
DatagramSocket ds=null;
public Chat(){
try{ds=new DatagramSocket(3000);}
catch(Exception e)
{e.printStackTrace();}
this.add(lst,"Center");
Panel p=new Panel();
this.add(p,"North");
p.setLayout(new BorderLayout());
p.add(tfIP,"West");
p.add(tfData,"East");
this.add(saveButton,BorderLayout.SOUTH);
setVisible(true);
new Thread(new Runnable()
{public void run()
{byte buf[]=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,1024);
while(true){try{ds.receive(dp);
lst.add(new String(buf,0,dp.getLength())+"from"+dp.getAddress().getHostAddress()+":"+dp.getPort());}
catch(Exception e){if(!ds.isClosed())
{e.printStackTrace();}
}
}
}
}).start();
tfData.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e)
{ byte [] buf;
buf = tfData.getText().getBytes();
try
{DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName(tfIP.getText()),3000);
ds.send(dp);
FileOutputStream fos=new FileOutputStream("1.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos);
String saveString=tfData.getText();//.replaceAll("\n","\r\n");
osw.write(saveString);
osw.write("\n");
osw.flush();
osw.close();
}
catch(Exception ex)
{ex.printStackTrace();}
tfData.setText("");
}
});
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{ds.close();
dispose();
System.exit(0);}
});
}
public static void main(String args[])
{
System.out.println("starting chat");
Chat mainFrame=new Chat();
mainFrame.setSize(300,360);
mainFrame.setTitle("Chat");
mainFrame.setVisible(true);
mainFrame.setResizable(false);
}
}
为什么保存的TXT文件只能保存最后一个记录。
会把以前的覆盖了,请大家不要保留意见啊!
先谢了哦!