问题描述
- 这段代码为什么无法实现写入和读取,求解答,谢谢!
-
import java.awt.*;import javax.swing.*;
import java.awt.event.*;
import java.io.*;
public class Filetest4 extends JFrame{
public static JTextArea getjt(){
JTextArea jt=new JTextArea();
return jt;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf=new JFrame();
Container c=jf.getContentPane();JScrollPane js=new JScrollPane(); js.setViewportView(getjt()); JButton open=new JButton("写入文件"); open.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ File file=new File("word.txt"); try{ FileWriter out=new FileWriter(file); String s=getjt().getText(); out.write(s); out.close(); }catch(Exception o){ o.printStackTrace(); } } }); JButton close=new JButton("读取文件"); close.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ File file=new File("word.txt"); try{ FileReader in=new FileReader(file); char[] ch=new char[1024]; int len=in.read(ch); getjt().setText(new String(ch,0,len)); in.close(); }catch(Exception o){ o.printStackTrace(); } } }); JPanel jp=new JPanel(new FlowLayout()); jp.add(open); jp.add(close); c.setLayout(new BorderLayout()); c.add(js,BorderLayout.CENTER); c.add(jp,BorderLayout.SOUTH); jf.setSize(200,200); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
}
解决方案
因为你每次getjt()的时候都是new一个JTextArea,新new的JTextArea里面没有输入,所以取出来的字符串是空,所以无法写入文件。
时间: 2024-12-02 08:37:14