如何检查java中是否存在文件

时间:2015-08-21 15:26:55

标签: java if-statement inputstream bufferedreader

我在检查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();
                }
            }

    }


    });

4 个答案:

答案 0 :(得分:2)

问题在于这一行:

br = new BufferedReader(new FileReader(path+f));
  1. 您将File追加到String,这是没有意义的。您应该将String附加到String,在这种情况下textField.getText())附加到path

  2. 如果文件根据FileReader的文档不存在,此行将抛出异常:

  3.   

    <强>抛出:   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);
    ...