Java 从.txt文件加载列表并将其保存回的程序

Java 从.txt文件加载列表并将其保存回的程序,java,list,export-to-text,Java,List,Export To Text,基本上我有这段代码,它形成了一个简单的JFrame程序,它将值(花名,LOL)存储到一个列表中并显示列表。但我就是不知道如何让它将列表保存到一个.txt文件并在启动时加载。。这可能是一个不需要动脑筋的问题,但我就是不明白,不知道从哪里开始 public class Flower extends JFrame implements ActionListener{ private List<String> flowerNames = new ArrayList<String>

基本上我有这段代码,它形成了一个简单的JFrame程序,它将值(花名,LOL)存储到一个列表中并显示列表。但我就是不知道如何让它将列表保存到一个.txt文件并在启动时加载。。这可能是一个不需要动脑筋的问题,但我就是不明白,不知道从哪里开始

public class Flower extends JFrame implements ActionListener{

private List<String> flowerNames = new ArrayList<String>();


private JTextArea output;
private JTextField input;

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run(){
            new Flower().setVisible(true);
        }
    });

}


public Flower() {
    setTitle("Flowers");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setLayout(new GridLayout(1,2));
    JPanel right = new JPanel(new GridLayout(2,1));
    JPanel row = new JPanel();
    row.add(new JLabel("Flower: "));
    row.add(input = new JTextField(25));
    right.add(row);
    row = new JPanel();
    row.add(new JPanel(new FlowLayout()));
    JButton button = new JButton("Add");
    row.add(button);
    right.add(row);
    button.addActionListener(this);
    getContentPane().add(right);
    getContentPane().add(new JScrollPane(output = new JTextArea()));
    pack();
}

@Override
public void actionPerformed(ActionEvent arg0) {

    if (input.getText().length() > 0){
        try {
            flowerNames.add(input.getText());
        } catch (Exception e){
            JOptionPane.showMessageDialog(
                    this, 
                    "Wrong input!", 
                    "Check the input", 
                    JOptionPane.PLAIN_MESSAGE);

        }
        finally {
            Collections.sort(flowerNames);
            StringBuilder sb = new StringBuilder();
            for (String input : flowerNames){
                sb.append(input.toString() + "\n");
            }

            output.setText(sb.toString());
        }
    }
}
}
公共类扩展JFrame实现ActionListener{
private List flowerNames=new ArrayList();
私有区域输出;
私有JTextField输入;
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
新花().setVisible(真);
}
});
}
公众花卉(){
片名(“花”);
setDefaultCloseOperation(关闭时退出);
setLayout(新网格布局(1,2));
JPanel right=新JPanel(新网格布局(2,1));
JPanel行=新的JPanel();
添加(新的JLabel(“花”);
添加(输入=新的JTextField(25));
右。添加(行);
行=新JPanel();
添加(新的JPanel(新的FlowLayout());
JButton按钮=新JButton(“添加”);
行。添加(按钮);
右。添加(行);
addActionListener(这个);
getContentPane().add(右);
getContentPane().add(新的JScrollPane(输出=新的JTextArea());
包装();
}
@凌驾
已执行的公共无效操作(操作事件arg0){
if(input.getText().length()>0){
试一试{
add(input.getText());
}捕获(例外e){
JOptionPane.showMessageDialog(
这
“输入错误!”,
“检查输入”,
JOptionPane.普通消息);
}
最后{
收藏。分类(花名);
StringBuilder sb=新的StringBuilder();
for(字符串输入:花名){
sb.append(input.toString()+“\n”);
}
output.setText(sb.toString());
}
}
}
}

您可能应该从 1) 加载文件以填充Flower类构造函数中的字符串列表flowers 2) 然后在关闭操作中添加操作侦听器,而不是在关闭时添加默认退出,以便将列表另存为文件 3) 最后,您应该确保文件存在,然后创建