我想提示用户输入文件名并将该输入传递给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);
}
答案 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