2012-08-26 7 views
7

디렉토리를 만들려고하는데 매번 실패 할 것 같습니다. 권한 문제도 아닌지 확인 했으므로 그 디렉토리에 쓸 수있는 모든 권한이 있습니다. 미리 감사드립니다. File.mkdir 부모 디렉토리가 존재하는 경우에만 디렉토리를 생성하기 때문에Java - mkdir() 디렉토리에 쓰기가 없습니다.

Directory is not created 
Error: C:\Program Files\Sure Important\Report Cards\2012\7\4532.txt (The system cannot find the path specified) 

답변

24

그것은 가능성이있다 : 여기

private void writeTextFile(String v){ 
    try{ 

     String yearString = convertInteger(yearInt); 
     String monthString = convertInteger(month); 
     String fileName = refernce.getText(); 
     File fileDir = new File("C:\\Program Files\\Sure Important\\Report Cards\\" + yearString + "\\" + monthString); 
     File filePath = new File(fileDir + "\\"+ fileName + ".txt"); 
     writeDir(fileDir); 
     // Create file 
     FileWriter fstream = new FileWriter(filePath); 
     try (BufferedWriter out = new BufferedWriter(fstream)) { 
      out.write(v); 
     } 
    }catch (Exception e){//Catch exception if any 
    System.err.println("Error: " + e.getMessage()); 
    } 
} 

private void writeDir(File f){ 
    try{ 
     if(f.mkdir()) { 
      System.out.println("Directory Created"); 
     } else { 
     System.out.println("Directory is not created"); 
     } 
    } catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

public static String convertInteger(int i) { 
    return Integer.toString(i); 
} 

Calendar cal = new GregorianCalendar(); 
public int month = cal.get(Calendar.MONTH); 
public int yearInt = cal.get(Calendar.YEAR); 

이 출력됩니다 : 여기

는 코드입니다. 필요한 모든 디렉토리를 만드는 File.mkdirs을 사용해보십시오.

다음은 나를 위해 작동 한 코드입니다.

private void writeDir(File f){ 
    try{ 
     if(f.mkdirs()) { 
      System.out.println("Directory Created"); 
     } else { 
     System.out.println("Directory is not created"); 
     } 
    } catch(Exception e){ 
      // Demo purposes only. Do NOT do this in real code. EVER. 
      // It squashes exceptions ... 
     e.printStackTrace(); 
    } 
} 

내가 만든 유일한 변화는 f.mkdirs()f.mkdir()을 변경했다 그리고

+0

건배를 (물론, 이러한 가능성의 일부를 신속하게 ...이 질문의 맥락에서 제거 될 수 있습니다) 감사!!! – Nick

+1

경로명의 "동적 인"부분에 두 개의 디렉토리가 있기 때문에 나는이 이론이 꽤 좋다고 말하고 싶습니다 ... –

+1

코드를 복사하여 mkdirs()로 변경하면 효과가있었습니다. 관련 코드를 포함하도록 편집 –

6

내 생각을했다 즐 그것을 못을 박았다, 그러나 다만 완성도, 여기에 모든 것들을되어있다 @La 즐 것을 내가 할 수있는 그 그 생각하는 것은 실패 File.mkdir()에 대한 호출이 발생할 수 :

  • 경로 이름에 구문 오류; 예 : 파일 이름 구성 요소에 잘못된 문자가 있습니다.
  • 최종 디렉토리 구성 요소를 포함 할 디렉토리가 존재하지 않습니다.
  • 이미 그 이름을 가진 무언가가 있습니다.
  • 당신은 당신은
  • 디렉토리 생성되는 경로에 어떤 디렉토리에 조회를 할 수있는 권한이 없습니다
  • 상위 디렉토리에서 디렉토리를 생성 할 수있는 권한이 없습니다 읽기 전용에 파일 시스템.
  • 파일 시스템이 하드웨어 오류 또는 네트워크 관련 오류를 발생했습니다.

은 :) 나를 alows 때 답변을 받아 들일 것, 문제가 될 것으로 보인다

+0

WINDINGS WINDOWS7. Window7 레거시 단어 (CON, PRN, AUX, CLOCK $, NUL, COM1-COM9, LPT1-LPT9 ...) 중 하나 인 디렉터리 부분이 파일 이름에 포함되어있는 경우 시간을 낭비했습니다. ...하지 않았습니까?) mkdir는 경고 나 명백한 논리적 설명없이 실패 할 것입니다. 자바 7 b51에서 발견 - 다른 버전의 Java 또는 다른 프로그래밍 언어에는 영향을 미치지 않을 수 있습니다. DOS cmd 쉘에는 영향을주지 않습니다. –