PrintWriter:java.io.FileNotFoundException:系统找不到指定的路径

时间:2017-09-28 15:30:56

标签: java filenotfoundexception printwriter

如果不在此处粘贴整个代码,则异常发生的行是:

PrintWriter prtwrt = new PrintWriter(new File(directoryName+File.separator+stud.getIndex()+".txt"));

我已经咨询了互联网,以及我在Java上的书籍,以及它应该工作的所有逻辑,但事实并非如此。有人可以解释为什么它不起作用,或者可能提出解决方案吗?

Stacktrace:

java.io.FileNotFoundException: students\0096-03.txt (The system cannot find the path specified)
    at java.io.FileOutputStream.open0(Native Method)
    at java.io.FileOutputStream.open(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileWriter.<init>(Unknown Source)
    at StudentsManager.main(StudentsManager.java:47)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:267)

此外,顾名思义,directoryName是应该创建文件的目录的名称。在这种情况下,它是“学生”。

2 个答案:

答案 0 :(得分:1)

所以,让我们

File f=new File(directoryName+File.separator+stud.getIndex()+".txt");

首先让我们检查路径是否存在,如果不存在则创建目录树:

if(!f.getParentFile().exists()) f.getParentFile().mkdirs();

现在你可以尝试创建Writer

PrintWriter prtwrt = new PrintWriter(f);

PrintWriter应该创建新文件(如果尚未存在);如果由于某些原因它无法正常工作,请使用f.createNewFile()

创建文件

所有这一切都必须有效。

答案 1 :(得分:0)

尝试输入文件的完整路径,因为您可能输入相对路径。

如果您想检查是否找到了该文件,请尝试以下代码:

File file  = new File(...);
if(!file.exists()) {
    System.out.println("File not found!");
    return;
}