재귀 파일 널 포인터 예외 :자바/안드로이드 내가 코드를 매우 간단 비트 무슨 생각으로, 안드로이드 에뮬레이터에서, 반복적으로 자바에서 디렉토리 구조를 얻으려고
public void list(File file)
{
if(file.isDirectory())
{
File[] children = file.listFiles();
for(int i = 0; i < children.length; i++)
{
Log.d(TAG, children[i].getName());
list(children[i]);
}
}
}
그것은 작동이 내가 에뮬레이터의 SD 카드의 루트에서 실행하지 않는 한 괜찮습니다 (지금까지), 어느 지점에서 null 포인터 예외가 발생합니다. LogCat은 메소드가 스스로를 호출 할 때 발생한다고 주장하지만 예외를 잡으려고 try/catch 블록에서 전체 for 루프를 래핑해야합니다.
같은 종류의 주제에 대해 약 6 가지 순열을 시도했는데 위의 것은 내가 생각할 수있는 가장 부드럽고 안전하지만 모두이 오류를 던집니다. 나는 어리석은 짓을하고 있거나 에뮬레이터의 SD 카드의 루트에 숨어있는 이상한 객체가있다.이 객체는 디렉토리로보고되지만 .listFiles()로 가짜 값을 반환한다. 그건. android_security 확실히 조금 교대 보인다.
아무도 나에게 말하면 어떤 친절한 사람이 있겠습니까?
다른 사람이 질문에 답변했습니다 (null 체크). 그러나 여기에는 이유가 있습니다. 'File.listFiles()'는 어떤 이유로 파일을 나열 할 수없는 경우 null을 반환합니다 (빈 배열과 반대). 한 가지 예는 보안 사용 권한이이를 금지하고 다른 하나가 유효하지 않은 심볼릭 링크 일 수 있습니다. 어떤 이유로 클래스의 다른 메소드가 유사한 상황에서 수행한다는 사실에도 불구하고 java.io.IOException을 throw하지 않습니다. –