为什么我的程序捕捉/抛出一个FileNotFoundException异常时,该文件存在?(Why

2019-08-31 14:22发布

Java的新手在这里!

我正在写一个程序练习读取输入和输出写入到文件。 我已经完成编码的程序,但是当我运行它,程序只是抓住并用FileNotFoundException异常进行。

该文件是在程序的源文件夹中,我甚至试过把它的每一个相关的程序文件夹中。 我试过了:

  • 声明的方法中头部中的异常
  • 围绕着一个try / catch块的部分功能于问题。
  • 上述两种一起的。

下面是导致问题的相关代码。 有一些伸出我失踪?

public static void main(String[] args) throws FileNotFoundException  {

    Scanner keyboard = new Scanner(System.in);

    String playerHighestScore = "", playerLowestScore = "";
    int numPlayers = 0, scoreHighest = 0, scoreLowest = 0;

    System.out.println("Enter an input file name: ");               
            String inputFileName = keyboard.nextLine();                 

    String outputFileName = getOutputFileName(keyboard, inputFileName);     
    File inputFile = new File(inputFileName);
    try {
        Scanner reader = new Scanner(inputFile);
        reader.close();
    }
    catch (FileNotFoundException exception) {       
        System.out.println("There was a problem reading from the file.");                   
        System.exit(0);
    }

    Scanner reader = new Scanner(inputFile);
    PrintWriter writer = new PrintWriter(outputFileName);

Answer 1:

答案很简单。 如果你得到一个FilENotFoundException ,明显的原因是文件未在指定的路径中找到。
如果您使用的IDE,对于工作目录路径是从源目录不同。
例如,如果您使用的是NetBeans,源文件都在里面/src 。 但你的工作目录( . )是项目目录。
在另一方面,该问题可能是@Don提到的事情。 如果你要一个跨平台的方式,你可以使用“ /在路径”。 它的工作原理无关的操作系统。
例如: String fileName = "C:/Directory/File.txt";
而这些路径是区分大小写的。 所以一定要使用正确的大小写。 (这不会是在Windows中的一个问题,直到您打包程序)。



文章来源: Why is my program catching / throwing a FileNotFoundException when the file exists?