2014-03-30 4 views
0

Windows에서 실행되는 Java 응용 프로그램에서 폴더를 만들려면 몇 가지 코드를 작성했습니다. 폴더를 만들지 만 예외는 아닙니다.Java mkdir이 제대로 작동하지 않는 이유는 무엇입니까?

public static String createFolders(String client) { 
    File folder = new File("/Users/Juan Manuel/Clientes/"+client); 

    if (!folder.exists()) { 

     try { 
      folder.mkdirs(); 
      new File(folder.getPath()+"/IMSS").mkdir(); 
      new File(folder.getPath()+"/SAT").mkdir(); 
      new File(folder.getPath()+"/Finanzas").mkdir(); 
      new File(folder.getPath()+"/Otros").mkdir(); 
     } 
     catch (Exception e) { 
      return e.toString(); 
     } 

    } 
    return ""; 
} 

나는 오류를 확인하기 위해 반환 값을 사용하지만 "" 반환받을, 그래서 적어도 통해 것입니다.

Explorer의 의도 된 루트 경로에서 C:\Users\Juan Manuel\Clientes으로 표시됩니다.

+0

코드가 try 블록에 입력되고 있습니까 ('folder.exists' false)? –

+0

이러한 폴더는 항상 존재하지 않아야합니다. 그래서 그들은 생성 될 것입니다. – diegoaguilar

+2

mkdir()과 mkdirs() 모두 성공 또는 오류를 나타내는 부울을 반환합니다. 반환 값을 무시하고 있습니다. –

답변

1

설명서에 따르면 SecurityException이 던져 질 때만 예외가 표시됩니다. 코드가 다른 이유로 폴더를 만들 수없는 경우 반환 코드가 무시되므로 코드에서 코드를 검색하지 않습니다.

변경 당신의 방법 오류에주의를 지불하기 위해 다음과 같이 : 나는 MS 윈도우 OS에서 코드를 실행하지 않은

try { 
    if (!folder.mkdirs()) { 
     return "root"; 
    } 
    if (!(new File(folder.getPath()+"/IMSS").mkdir())) { 
     return "IMSS"; 
    } 
    if (!(new File(folder.getPath()+"/SAT").mkdir())) { 
     return "SAT"; 
    } 
    if (!(new File(folder.getPath()+"/Finanzas").mkdir())) { 
     return "Finanzas"; 
    } 
    if (!(new File(folder.getPath()+"/Otros").mkdir())) { 
     return "Otros"; 
    } 
} catch (...) 
+0

나는 메서드의 끝에 "" "를 반환한다. 그래서 어떻게 든 진리로 평가된다. 권한에 대해 생각하고 있어요 – diegoaguilar

+0

@diegoaguilar 권한 인 경우 예외가 발생합니다. 코드가 다른 장소에서 디렉토리를 만들거나/Users/Juan Manuel/Clientes/"+ 클라이언트"경로가 이미 존재할 가능성이 있습니다. – dasblinkenlight

1

,하지만 난 다 잘 모르겠어요 : 사용자를 \는 ~에 해당/Users ~ ~ 자바.

예외 처리 부분으로 넘어 가지 않는다면 Java가 C : \ Users \ Juan Manuel \ Clientes가 아닌 디스크의 어딘가에 파일을 생성한다는 것을 의미합니다. "폴더"파일 경로의 절대 경로를 인쇄 해보고 이미 존재하는지 확인하십시오.

catch 문. do e.printStackTrace(); createFolders()를 호출하는 프로그램이 반환 문자열을 인쇄하지 않으면 오류 메시지를 반환하는 대신에 먼저. e.toString()을 검사하면 근본 원인을 찾아내는 데는 완벽하지 않은 경우가 있습니다.

또한 보리스가 언급 한대로 적절한 파일 작성을 시도해보십시오. 귀하의 전화가 작동한다는 것을 알고 있지만 (File을 사용하고 있으므로) File (path, filename)을 사용합니다. 더 명확하고 덜 오류가 발생하기 쉽습니다.

마지막으로, JavaDoc를 http://docs.oracle.com/javase/7/docs/api/java/io/File.html#File(java.lang.String)

주어진 경로가 null 때 NPE를 반환합니다 '파일 클래스를 확인하지만, 다른 경우에 대한 예외를 반환하지 않습니다.

관련 문제