
java关闭流的顺序影响程序结果
下是另存为按钮的处理方法当先关闭fw后关闭bw时,无论jta里写什么保存的txt都是空文件jta为JFrameTxetAreapublicvoidactionPerfor...
下是另存为按钮的处理方法 当先关闭fw后关闭bw时,无论jta里写什么保存的txt都是空文件
jta为JFrameTxetArea
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("save")){
JFileChooser jfc=new JFileChooser();
jfc.setDialogTitle("另存为...");
jfc.showSaveDialog(null);
jfc.setVisible(true);
String file=jfc.getSelectedFile().getAbsolutePath();
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter(file);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
bw=new BufferedWriter(fw);
try {
bw.write(jta.getText());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
finally{
try {
bw.close();
fw.close()
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} 展开
jta为JFrameTxetArea
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("save")){
JFileChooser jfc=new JFileChooser();
jfc.setDialogTitle("另存为...");
jfc.showSaveDialog(null);
jfc.setVisible(true);
String file=jfc.getSelectedFile().getAbsolutePath();
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter(file);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
bw=new BufferedWriter(fw);
try {
bw.write(jta.getText());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
finally{
try {
bw.close();
fw.close()
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} 展开
2个回答
展开全部
bw是缓冲流,使用bw.write 后,数据并没有直接写入txt文件中,而是在bw的缓冲区内,所以这时先关闭输出流fw,则txt中就是空的了,如果先关闭bw,则缓冲流会在内部先调用bw.flush();将缓冲区的内容输出到文件中,所以txt才有内容。要解决这个问题,需要在bw.write 后显示调用bw.flush();这样先关闭那个流都一样了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询