2017-09-28 6 views
-2

를 지정한 선을 찾을 수있다 :의 PrintWriter : java.io.FileNotFoundException : 예외가 계속 발생하는 위치 시스템, 경로가 여기에 전체 코드를 붙여없이

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

나는 인터넷을 협의하고, 책 한 나는 자바를 가지고 있으며, 모든 논리에 의해 작동해야하지만 그렇지 않습니다. 누군가가 왜 작동하지 않는지 설명하거나 해결책을 제안 할 수 있습니까?

스택 트레이스 : 이름에서 알 수 있듯이

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(); 

당신은 작가에게

를 만들려고 할 수 있습니다 0
PrintWriter prtwrt = new PrintWriter(f); 

PrintWriter 아직없는 경우 새 파일을 만들어야합니다. 어떤 이유로 작동하지 않는 경우 사전 파일을 만들고 f.createNewFile()

함께 사용해야합니다.