2014-09-30 3 views
0

디렉터리를 재귀 적으로 제거하려고합니다. 하지만 몇 가지 문제가 있습니다. 그래서 그림에 표시된대로 "test"폴더에 디렉토리를 만듭니다. 그러나 3 번째 폴더에서 java.lang.NullPointerException 예외를 throw합니다. 이디렉터리를 재귀 적으로 제거합니다.

That's how it works

+1

당신이 그것을 던지고 어떤 예외 말해 수 :

if(temp.length > 0) 

if(temp != null && temp.length > 0) 

에 전체 코드를 변경? (NullPointerException, IOException 등) –

+1

전체 스택 추적을 추가하십시오. – Jens

+0

물론, 그것은 질문에 추가했습니다 –

답변

4

당신은 시작을 위해이 일을하지 말아야 작동하는 방법 그

public static void RecursiveRm (String myFile) 
{ 
    File fl = new File(myFile); 
    String [] temp = fl.list(); 
    if(temp.length > 0){ 
     for (int i = 0; i < temp.length; ++i){ 
      myFile = myFile + "/" + temp[i]; 
      RecursiveRm(myFile); 
     } 
    } 
    else 
     fl.delete(); 
} 

:

는 다음 그림과 일부 코드입니다.

myFile = myFile + "/" + temp[i]; 

이것은 당신이 그것에 abc있는 디렉토리가있는 경우는 myFile

대신이 시도 변경하지 않도록해야 /a/b/c 경로가 될 것을 의미합니다. 디렉토리가 존재하지 않는 경우

for(String file: new File(myFile).list()) { 
    recursiveRm(myFile + "/" + file); 
} 
fl.delete(); 

대부분의 경우 당신은 File.list() 반환 null로는 NullPointerException을 얻고있다.

+1

매일. 그 작품! 고마워요 =) –

+0

시계처럼 작동합니다. –

2

코드를보고 나면 하위 디렉토리가없는 경우 fl.list()에서 NullPointerException이 발생합니다. 코드의 변경 :

public static void RecursiveRm (String myFile) 
{ 
    File fl = new File(myFile); 
    String [] temp = fl.list(); 
    if(temp != null && temp.length > 0){ 
     for (int i = 0; i < temp.length; ++i){ 
      myFile = myFile + "/" + temp[i]; 
      RecursiveRm(myFile); 
     } 
    } 

    fl.delete(); 
} 
+0

예, 그림에서 언급 한대로 문제입니다. 고맙습니다 =) –

+0

코드를 시도했습니다. 작동하지 않습니다 = ( –

+0

죄송합니다, 다시 실행하고 논리 오류가 있음을 깨달았습니다. 'else'제거 내 대답을 업데이트하고 테스트했습니다. – milk3422

관련 문제