java中为什么使用write不能把字符写到文件,以下代码哪里有问题呢?

packagecom.bin;importjavax.swing.*;importjava.io.*;importjava.awt.*;importjava.awt.ev... package com.bin;

import javax.swing.*;

import java.io.*;
import java.awt.*;
import java.awt.event.*;

public class demo3 extends JFrame implements ActionListener {

JTextArea jta;
JMenu jm;
JMenuBar jmb;
JMenuItem jmt;
JMenuItem jmt2;
public static void main(String[] args) {
// TODO Auto-generated method stub
demo3 demo=new demo3();

}
public demo3(){
jta=new JTextArea();
jmb=new JMenuBar();
jm =new JMenu("菜单");
jmt=new JMenuItem("打开");
jmt.addActionListener(this);
jmt.setActionCommand("open");
jmt2=new JMenuItem("保存");
jmt2.addActionListener(this);
jmt2.setActionCommand("save");

this.add(jta);
jmb.add(jm);
jm.add(jmt);
jm.add(jmt2);
this.setJMenuBar(jmb);

this.setSize(500, 350);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setTitle("记事本");

}
@Override
public void actionPerformed(ActionEvent e) {

if(e.getActionCommand().equals("open")){
JFileChooser jfc=new JFileChooser();
jfc.setDialogTitle("选择文件...");
jfc.showOpenDialog(null);
jfc.setVisible(true);
String firepath=jfc.getSelectedFile().getAbsolutePath();

FileReader fr=null;
BufferedReader br=null;
try {
fr=new FileReader(firepath);
br=new BufferedReader(fr);
String n="";
String s="";
while((n=br.readLine())!=null){
s+=n+"\r\n";

}

this.jta.setText(s);

} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{
try {
fr.close();
br.close();

} catch (Exception e2) {
// TODO: handle exception
}

}

}
else if(e.getActionCommand().equals("save")){
JFileChooser jfc=new JFileChooser();
jfc.setDialogTitle("另存为...");
jfc.showSaveDialog(null);
jfc.setVisible(true);
String filepath=jfc.getSelectedFile().getAbsolutePath();

FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter(filepath);
bw=new BufferedWriter(fw);
System.out.println(filepath);

bw.write(this.jta.getText());

} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{

try {
fw.close();
bw.close();
} catch (Exception e2) {
// TODO: handle exception
}
}

}

}

}
展开
 我来答
dark19861201
2016-11-18 · TA获得超过2152个赞
知道大有可为答主
回答量:2584
采纳率:79%
帮助的人:1781万
展开全部
简单看了一下,应该是你使用的是BufferedWriter,会有缓存在内存的内容,需要把缓存中的数据拿出来,代码表示为再调用write方法以后,再调用bw.flush();应该就可以了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式