我在检查Java中是否存在文件时遇到问题。然而,IF块似乎有效,但ELSE似乎不行。看,当文件存在时,它会提示一个显示“找到文件”的框。当文件存在时,我的程序中会发生这种情况,问题是当文件不存在时我的控制台中出现错误。有人能告诉我编码问题的简单方法是什么?谢谢 !这是我的代码
public void actionPerformed(ActionEvent e) {
BufferedReader br = null;
File f = new File(textField.getText());
String path = new String("C:\\Users\\theBeard\\workspace\\LeapYear\\");
try {
String sCurrentLine;
br = new BufferedReader(new FileReader(path+f));
if (f.exists())
{
JOptionPane.showMessageDialog(null, textField.getText()+" found" );
while ((sCurrentLine = br.readLine()) != null) {
textArea.append(sCurrentLine);
textArea.append(System.lineSeparator());
}
}
else
{
JOptionPane.showMessageDialog(null, textField.getText()+" not found" );
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
if (br != null)
{
br.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
});
答案 0 :(得分:2)
问题在于这一行:
br = new BufferedReader(new FileReader(path+f));
您将File
追加到String
,这是没有意义的。您应该将String
附加到String
,在这种情况下textField.getText())
附加到path
。
如果文件根据FileReader
的文档不存在,此行将抛出异常:
<强>抛出:强>
FileNotFoundException
- 如果指定的文件不存在,则是目录而不是常规文件,或者由于某些其他原因无法打开进行阅读。
这会导致程序到达catch
子句并打印异常堆栈跟踪。您应该只在f.exists()
返回true时调用此行:
if (f.exists())
{
br = new BufferedReader(new FileReader(path + textField.getText()));
...
}
答案 1 :(得分:1)
查看代码的这些行:
br = new BufferedReader(new FileReader(path+f));
if (f.exists())
您正在尝试在检查文件是否存在之前打开文件。因此,如果打开它的尝试失败并且FileNotFoundException
,则永远不会达到测试。
答案 2 :(得分:0)
String path = "C:\\Path\\To\File\\Directory\\";
String fileName = "NameOfFile.ext";
File f = new File(path, fileName);
if(f.exists()) {
//<code for file existing>
} else {
//<code for file not existing>
}
答案 3 :(得分:0)
在检查文件是否存在后,您必须实例化BufferedReader。
String path = new String("C:\\Users\\theBeard\\workspace\\LeapYear\\");
File f = new File(path + textField.getText());
...
if (f.exists())
{
br = new BufferedReader(new FileReader(f.getAbsolutePath())); // or br = new BufferedReader(f);
...