cli*_*uke 2 java swing jfilechooser filenotfoundexception opencsv
我正在编写一个小应用程序,它读取csv文件并将内容显示到JList中.
我目前的问题是new FileReader(file)代码一直给我一个java.io.FileNotFoundException错误,我不太清楚为什么.
loadFile.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent actionEvent)
{
JFileChooser fileChooser = new JFileChooser();
fileChooser.setCurrentDirectory(new File("~/"));
if (fileChooser.showOpenDialog(instance) == JFileChooser.APPROVE_OPTION)
{
File file = fileChooser.getSelectedFile();
CSVReader reader = new CSVReader(new FileReader(file.getAbsolutePath()));
fileLocation.setText(file.getAbsolutePath());
}
}
});
Run Code Online (Sandbox Code Playgroud)
new File("~/")
Run Code Online (Sandbox Code Playgroud)
~是主目录的Shell快捷方式.使用类似的绝对路径
new File("/home/myself/")
Run Code Online (Sandbox Code Playgroud)
正如@pickypg所指出的,如果传递的目录无效,JFileChooser.setCurrentDirectory()会将用户的主目录设置为默认目录.因此,即使File()不像~Shell那样解释,也会JFileChooser在用户的主目录中启动 - 但对于任何不存在的目录都是如此,例如
new File("/Windows") // JFileChooser would start in "\Windows"
new File("/xWindows") // JFileChooser would start in the user's home directory
Run Code Online (Sandbox Code Playgroud)
如文档所述,用户的主目录是特定于系统的,但在MS Windows上,它通常是"我的文档"文件夹.
但是,即使使用这样一条不存在的路径为"〜/",也会JFileChooser.getSelectedFile()返回一条正确的路径,这样FileReader()就不应该抛出一条路径FileNotFoundException.
基于这些注释,事实证明问题不是运行时异常,而是编译时错误,其中没有捕获异常.try{}catch{}在FileReader()构造函数周围添加一个块:
try {
CSVReader reader = new CSVReader(new FileReader(file.getAbsolutePath()));
}catch(FileNotFoundException fnfe) {
// handle exception, e.g. show error message
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1531 次 |
| 最近记录: |