2017-09-28 12 views
-2

を指定見つけることができない、例外が起こって続け行は次のとおりです。のPrintWriter:java.io.FileNotFoundException:システムはパスがここで全体のコードを貼り付けなければ

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

私はインターネットに相談し、図書います私はJava上にあり、すべてのロジックによって動作するはずですが、そうではありません。誰かがなぜそれがうまくいかないか、あるいはおそらく解決策を提案する理由について説明することができますか?

スタックトレース:また

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では、名前が示すように、ファイルを作成するディレクトリの名前です。この場合、それは「学生」です。

+3

'directoryName'とは何ですか?また、stacktraceで全例外をペーストする – Antoniossss

+0

システムが指定されたパスを見つけることができないため、動作しません。 – Oleg

+0

@Antoniossssは質問を編集しました –

答えて

0

相対パスを入力する可能性があるため、ファイルへの絶対パスを入力しようとします。

あなたは、ファイルが次のコード試す発見したかどうかを確認したい場合:

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

をので、まずそれがない場合は、パスが存在するかどうかを確認し、ディレクトリツリーを作成することができます

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

を持っていることができますない:

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

今はライター

を作成しようとすることができます
PrintWriter prtwrt = new PrintWriter(f); 

PrintWriterまだ存在しない場合は新しいファイルを作成する必要があります。何らかの理由でうまく動作しない場合は、事前にファイルを作成してください。f.createNewFile()

すべて一緒に動作する必要があります。

関連する問題