简体   繁体   English

如何将文本从JOptionPane存储到文本文件中

[英]How to store text from JOptionPane into text file

I am a novice. 我是新手。 I am trying to take the user-input text from the JOptionPane, and store it into a text file. 我正在尝试从JOptionPane提取用户输入的文本,并将其存储到文本文件中。 Thereafter I would like to read the text and do what-not with it. 此后,我想阅读该文本并做其他事情。

May I please have help on storing the inputted text? 在存储输入的文本时,请问我可以提供帮助吗? Thanks. 谢谢。 Here's my code: 这是我的代码:

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();
        }
    });
}

} }

You have any number of potential options, depending on your needs... 根据您的需要,您有许多潜在的选择...

You could... 你可以...

Write the contents to a Properties file... 将内容写入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);
    }
}

As you can see, you have to physically load and save the contents yourself. 如您所见,您必须亲自加载并保存内容。 This does mean, however, you get to control the location of the file... 但是,这的确意味着您可以控制文件的位置...

You could... 你可以...

Make use of the Preferences API... 利用Preferences API ...

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

Then you would simply use something like... 然后,您只需使用...

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

to retrieve the values. 检索值。

The benefit of this is the storage process is taking care for you, but you lose control of where the data is stored. 这样做的好处是,存储过程很在乎您,但您却无法控制数据的存储位置。

You could... 你可以...

  • Write the data to a file yourself, in your own format. 自己以自己的格式将数据写入文件。 This is lot of work and overhead, but you gain the benefit of not only controlling the location of the file, but also the format that the data is maintained in. See Basic I/O for some more details. 这是很多工作和开销,但是您不仅获得了好处,不仅可以控制文件的位置,还可以控制数据的保存格式。有关更多详细信息,请参见Basic I / O。
  • Write the data in XML format, which provides a level of hierarchical control (if that's important), but does increase the complexity of the management. 以XML格式编写数据,该格式提供了层次控制(如果重要的话),但是确实增加了管理的复杂性。

Try this 尝试这个

     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());
            }
        }
      }

I am basically attempting to get the text from the input dialog and write it to a file of your choice. 我基本上是试图从输入对话框中获取文本并将其写入您选择的文件中。 The file will be written as a text file using the appending string ".txt" which sets the mime type so will always be text. 该文件将使用设置了mime类型的附加字符串“ .txt”作为文本文件写入,因此始终为文本。

Let me know how it goes. 让我知道事情的后续。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM