Java 为什么我的程序在文件存在时捕获/抛出FileNotFoundException?
这里是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
- 在方法头中声明异常
- 用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”
发现错误要比进入控制台容易得多。路径很容易弄乱,而且每次手动输入时,更容易弄乱。但是,这只是我的看法。我不想阻止你尝试,因为这是你学习的方式。