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

如何检查java中是否存在文件,java,if-statement,inputstream,bufferedreader,Java,If Statement,Inputstream,Bufferedreader,我在检查Java中是否存在文件时遇到了问题。然而,IF块似乎有效,而ELSE块似乎无效。请看,当文件存在时,它会提示一个框,上面写着“找到文件”。每当文件确实存在时,我的程序中就会出现这种情况,问题是当文件不存在时,我的控制台中就会出现大量错误。有人能告诉我什么是更简单和更简短的方法来编码我的问题吗?谢谢这是我的密码 public void actionPerformed(ActionEvent e) { BufferedReader br = null

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

    }


    });
String path=“C:\\path\\To\File\\Directory\\”;
字符串fileName=“NameOfFile.ext”;
文件f=新文件(路径、文件名);
如果(f.exists()){
//<现有文件的代码>
}否则{
//<文件代码不存在>
}

这一行有问题:

br = new BufferedReader(new FileReader(path+f));
  • 您将
    文件
    附加到
    字符串
    ,这没有意义。您应该将
    字符串
    附加到
    字符串
    ,在本例中,
    textField.getText())
    附加到
    路径

  • 根据
    FileReader
    的文档,如果文件不存在,此行将引发异常:

  • 抛出:
    FileNotFoundException
    -如果命名文件不存在,是一个目录而不是常规文件,或者由于某些其他原因无法打开进行读取

    这会导致程序到达
    catch
    子句并打印异常堆栈跟踪。只有当
    f.exists()
    返回true时,才应调用此行:

    if (f.exists())
    {
        br = new BufferedReader(new FileReader(path + textField.getText()));
        ...
    }
    

    请看以下代码行:

    br = new BufferedReader(new FileReader(path+f));
    if (f.exists())
    

    您正在尝试在检查文件是否存在之前打开该文件。因此,如果尝试打开它失败,并出现
    FileNotFoundException
    ,则永远无法进行测试。

    您必须在检查文件是否存在后实例化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);
        ...
    

    这是2015年;不再使用文件。使用JSR203,在这种情况下,
    Files.exists()
    。请解释您的答案,仅仅发布代码并不构成完整答案
    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);
        ...