如果不在此处粘贴整个代码,则异常发生的行是:
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是应该创建文件的目录的名称。在这种情况下,它是“学生”。
答案 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;
}