从JOptionPane.showInputDialog创建InputStreamReader

时间:2015-02-03 09:29:46

标签: java

我想提示用户输入文件名并将该输入传递给InputStreamReader以读取它。我的代码有什么问题?

    result = JOptionPane.showInputDialog(null, "Enter a file");

    BufferedReader reader = new BufferedReader(new InputStreamReader(result));            

    String fileName = null;

    try {

        fileName = reader.readLine();

    } catch (IOException ioe) {

        System.out.println("Eingabe konnte nicht verarbeitet werden!");
        System.exit(1);

    }

2 个答案:

答案 0 :(得分:0)

您不需要BufferedReader来阅读fileName,但您稍后会用它来阅读其内容。 showInputDialog()本身已经返回了文件名。所以,你需要

String fileName = JOptionPane.showInputDialog(null, "Enter a file");

如果您希望用户从本地系统中选择文件,最好使用JFileChooser对话框。

File fileObj;
String fileName, fileDir;

JFileChooser fileBrowser = new JFileChooser();
int result = fileBrowser.showOpenDialog(this);

if (result == JFileChooser.APPROVE_OPTION) {

   fileObj = fileBrowser.getSelectedFile();
   fileName = fileBrowser.getSelectedFile().getName();
   fileDir = fileBrowser.getCurrentDirectory().getAbsolutePath();

   // file may not exist
   if (!fileObj.exists()) {
     // show error msg
   }
}

答案 1 :(得分:0)

您使用的方法JOptionPane.showInputDialog(...)会返回一个String对象,其中包含输入的文字 - 因此您的result也必须是String。我想它会包含你想要阅读的文件的路径。

如果查看constructors of InputStreamReader,您会注意到您无法使用String实例化新的{{3}}。 但是没有必要,因为您不想从代表路径的String读取,而是从InputStream的{​​{1}}读取。

试试这个:

File