2014-03-27 2 views
0

현재 작업 디렉토리에 URL 제목을 사용하여 디렉토리를 만들려고합니다. 그러나 나는 그 URL을 해시로 변환하고 16 진수로 변환하려고하므로 생성하려고하는 디렉토리의 이름은 273212b1과 같습니다. 그러나 코드를 실행할 때마다 IOException이 발생하고 디렉토리를 만들 수 없습니다. 내가 뭘 잘못하고 있는지 모르겠다.mkdir() Java가 IOException을 던지기 시작합니다.

내가 File Directory = new File ("Users/whatever/Documents"+ dirname)과 같은 작업을하더라도; 작동하지 않습니다.

+1

_말하다_? –

+0

디렉토리 디렉토리가 필요할 수도 있기 때문에'directory.mkdirs(); '를 사용하려고 시도합니다. –

+0

생성하려는 전체 경로의 System.out.println을 만드십시오. 그 파일은 무엇이 잘못되었는지에 대한 단서를 제공합니다. –

답변

2

해시 또는 16 진수를 사용하여 디렉토리를 만들지 않으면 URL을 사용하여 디렉토리를 만들려고합니다.

String dirname = s; 

당신은의이 진수로 설정 :

public static File mkdir(String s) throws IOException 

당신은 변수라고있는 dirname에 URL을 복사

의 호출되는 방법은 몇 가지 URL을 = 다음은 관련 단계입니다 (dirname 값을 변경하지 않는) 해시 값 :

s = Integer.toHexString(dirname.hashCode()); 

이름에 대한 URL이 디렉토리는 : 당신이 그 디렉토리를 만들려고 할 때

File directory = new File(dirname); 

, 그것 때문에 디렉토리 이름에 유효하지 않은 URL에있는 모든 문자 작동하지 않을.

당신은이 일을해야한다 : 당신이 그 문제를 해결하면

File directory = new File(s); 

, 당신은 다음 다음과 같이 디렉토리의 이중 작성을 처리 할 예정 : 예외를 무엇

if (directory.exists()) { 
    System.out.println("Directory already exists!"); 
} else { 
    success = directory.mkdir(); 
    if (success) { 
     System.out.println("Successful"); 
    } else { 
     throw new IOException("can't make directory for " + s); 
    } 
} 
3
success = directory.mkdir(); 

if (!directory.mkdir()) 

당신은 두 번 디렉토리를 만들거나하려고하고 있습니다. 두 번째로 실패하면 예외가 발생합니다.

논리를 확인하십시오. 그것은 불필요합니다. 대부분을 줄일 수 있습니다.

if (!directory.exists() && !directory.mkdir()) 
{ 
    throw new IOException(...); 
} 

출력이 모두 필요한 것은 아닙니다.

관련 문제