Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的程序在文件存在时捕获/抛出FileNotFoundException?_Java_Exception_Runtime Error_Filenotfoundexception - Fatal编程技术网

Java 为什么我的程序在文件存在时捕获/抛出FileNotFoundException?

Java 为什么我的程序在文件存在时捕获/抛出FileNotFoundException?,java,exception,runtime-error,filenotfoundexception,Java,Exception,Runtime Error,Filenotfoundexception,这里是Java新手 我正在写一个程序来练习读取输入和将输出写入文件。我已经完成了程序的编码,但当我运行它时,程序只是捕获并继续执行FileNotFoundException 该文件位于程序的源文件夹中,我甚至尝试将其放置在与程序相关的每个文件夹中。我试过: 在方法头中声明异常 用try/catch块围绕有问题的部分 以上两项都在一起 下面是导致问题的相关代码。有什么突出的东西是我遗漏的吗 public static void main(String[] args) throws FileNo

这里是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);

答案很简单。如果您得到一个
FilENotFoundException
,原因显然是在给定路径中找不到文件。
如果使用IDE,则工作目录的路径与源目录不同。
例如,如果您使用的是NetBeans,则源文件位于
/src
中。但是您的工作目录(
)是项目目录。
另一方面,问题可能是@Don提到的。如果要采用跨平台方法,可以在路径中使用“
/
”。它的工作方式与操作系统无关。
示例:
stringfilename=“C:/Directory/File.txt”

这些路径区分大小写。因此,请确保使用正确的案例。(在您打包程序之前,在Windows中这不会是问题。)

要更快获得更好的帮助,请发布一个。顺便说一句,按照
filef=newfile(“.”)的思路在该方法中进行一些调试;System.out.println(f.getCanonicalPath())并检查它指向您期望的位置。我几乎肯定它与路径有关。这是在什么操作系统上运行的,您是否正在避开斜杠(Windows为反斜杠,其他为正斜杠)?(例如C:\Some Directory\file.txt是错误的。它应该是C\\:Some Directory\\file.txt)此外,由于您刚刚开始,我建议为您的测试程序使用固定的字符串对象,而不是手动输入(例如
String file=“C:\\Some Directory\\file.txt”
发现错误要比进入控制台容易得多。路径很容易弄乱,而且每次手动输入时,更容易弄乱。但是,这只是我的看法。我不想阻止你尝试,因为这是你学习的方式。