有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将JOptionPane中的文本存储到文本文件中

我是个新手。我试图从JOptionPane中获取用户输入的文本,并将其存储到文本文件中。此后,我想阅读课文,并用它做什么

能帮我保存输入的文本吗?谢谢 这是我的代码:

import javax.swing.JOptionPane;
import java.io.*;

public class RunProgram {


public static void introView() {
    //The introduction
    JOptionPane.showMessageDialog(null, "Welcome." +
            " To begin, please click the below button to input some information " +
            "about yourself.");
}

public static void personInput() {

    try{
        File userInfo = new File("C:\\Users\\WG Chasi\\workspace\\" +
                "Useful Java\\products\\UserInfo.txt");
        userInfo.getParentFile().mkdirs();
        FileWriter input = new FileWriter(userInfo);

        JOptionPane userInput = new JOptionPane();
        userInput.showInputDialog("Enter details");/*I want to store the text from the InputDialog into the text file*/
        //Write text from the JOptionPane into UserInfo.txt
    }catch(Exception e){
        JOptionPane.showMessageDialog(null, "An ERROR has occured.");
    }
}


public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            introView();
            personInput();
        }
    });
}

}


共 (2) 个答案

  1. # 1 楼答案

    试试这个

         public static void personInput() 
         {
    
            String whatTheUserEntered = JOptionPane.showInputDialog("Enter details");
    
            JFileChooser chooser = new JFileChooser();
            chooser.setCurrentDirectory( new File( "./") );
            int actionDialog = chooser.showSaveDialog(yourWindowName); //where the dialog should render
            if (actionDialog == JFileChooser.APPROVE_OPTION)
            {
                File fileName = new File(chooser.getSelectedFile( ) + ".txt" ); //opens a filechooser dialog allowing you to choose where to store the file and appends the .txt mime type
                if(fileName == null)
                    return;
                if(fileName.exists()) //if filename already exists
                {
                    actionDialog = JOptionPane.showConfirmDialog(yourWindowName,
                                       "Replace existing file?");
                    if (actionDialog == JOptionPane.NO_OPTION) //open a new dialog to confirm the replacement file
                        return;
                }
                try
                {
                    BufferedWriter out = new BufferedWriter(new FileWriter(fileName)); 
    
                        out.write(whatTheUserEntered );
                        out.close(); //write the data to the file and close, please refer to what madProgrammer has explained in the comments here about where the file may not close correctly. 
                }
                catch(Exception ex)
                {
                     System.err.println("Error: " + ex.getMessage());
                }
            }
          }
    

    我基本上是试图从输入对话框中获取文本,并将其写入您选择的文件中。该文件将使用附加字符串“.txt”作为文本文件写入,该字符串将mime类型设置为文本

    告诉我进展如何

  2. # 2 楼答案

    根据你的需要,你有很多潜在的选择

    你可以

    将内容写入Properties文件

    private Properties properties = new Properties();
    
    //...
    String name = JOptionPane.showInputDialog("What is your name?");
    properties.set("user.name", name);
    
    //...
    protected void savePropeties() throws IOException {
        try (OutputStream os = new FileOutputStream(new File("User.properties"))) {
            properties.store(os, "User details");
        }
    }
    
    protected void loadPropeties() throws IOException {
        try (InputStream is = new FileInputStream(new File("User.properties"))) {
            // Note, this will overwrite any previously existing
            // values...
            properties.load(is);
        }
    }
    

    正如您所见,您必须亲自加载并保存内容。这意味着,你可以控制文件的位置

    你可以

    利用PreferencesAPI

    String name = JOptionPane.showInputDialog("What is your name?");
    Preferences preferences = Preferences.userNodeForPackage(RunProgram.class);
    preferences.put("user.name", name);
    

    然后你可以简单地使用像

    Preferences preferences = Preferences.userNodeForPackage(RunProgram.class);
    String name = preferences.get("user.name", null);
    

    检索值

    这样做的好处是,存储过程会照顾到您,但您会失去对数据存储位置的控制

    你可以

    • 以自己的格式将数据写入文件。这需要大量的工作和开销,但您不仅可以控制文件的位置,还可以控制维护数据的格式。有关更多详细信息,请参见Basic I/O
    • 以XML格式编写数据,这提供了一定级别的分层控制(如果这很重要的话),但确实增加了管理的复杂性