2011-11-02 4 views
-1

의 존재를 확인하는 방법을 나는이 작은 코드자바, 파일

File source; 
    if (!source.exists()) { 
     source = new File("instances/student"+student.getStudentID()+".data"); 
    } 

문제는, 소스가 초기화되지 않고있다에게 있습니다. 요점은 그것이 존재 하는지를 검사하는 것이므로 어떻게 이것을 피할 수 있습니까?

답변

7

File 개체를 만듭니다.

File source = new File(...); 

사용하는 생성자는 파일을 찾는 방법에 따라 다릅니다. 간단한 경로 문자열로 충분할 수 있습니다.

편집 : 그냥 혼란의 원인을 깨닫게 될 수도 있습니다. File 개체를 만들면 파일 시스템에서 파일을 찾거나 만들려고합니다. 그건 사실이 아니야. new File(...)으로 전화하면 존재 여부를 확인하거나 생성하려고 시도하지 않습니다. File 객체는 파일 시스템의 경로에 대한 추상화입니다. 디렉토리 일 수도 있습니다.

File f = new File(somepathhere); 
if (!f.exists()) { 
    f = new File("instances/student"+student.getStudentID()+".data"); 
} 

을 또는 당신은 f.isFile 경우() 확인하실 수 있습니다

+0

잠깐, 내가 새로운 파일 (...)을 작성하면 기존 파일을 덮어 쓰지 않을 것입니다. – vedran

+0

@vedran 정확합니다. 파일 시스템에는 아무 것도하지 않습니다. 그것은 단지 자바 객체입니다. 'exists()','delete()'또는'renameTo'와 같은 메소드를 호출 할 때만 실제 파일에 접근 할 수 있습니다. 내용을 변경하려면'FileWriter'와 같은 것이 필요할 것입니다. 존재하지 않는 파일을 생성하려면'File' 객체에 대해'createNewFile()'을 호출하십시오. 정확한 정보는 [JavaDoc] (http://download.oracle.com/javase/6/docs/api/java/io/File.html)에서 확인하십시오. –

1

당신은 할 수 있습니다. 파일을 작성해도 파일 시스템에 파일이 작성되지는 않습니다. File 객체는 실제로 파일 이름만을 나타냅니다. 파일이 있는지 여부를 확인하려면 적절한 이름의 파일을 만들고 exists()을 확인하십시오.

하지만 파일을 덮어 쓰거나 파일에 추가하려면 모든 파일이 필요하지 않습니다. append 매개 변수를 true으로 설정하고 추가하려는 경우 new FileOutputStream(...) 만 작성하면됩니다. 사전에 확인할 필요가 없습니다. 사실 시간 낭비 일뿐입니다.

0

당신은 오해를 갖고있는 것 같다 :