2014-09-25 6 views
5

"Reset"이라는 버튼이있어 전체 폴더 (사용자 폴더)가 삭제됩니다. 그 후 다시 동일한 폴더를 만들려고하는데 처음 시도 할 때 폴더를 만들 수 있지만 두 번째로 사용자 폴더 재설정 및 다시 만들기를 시도하면 mkdir()가 폴더를 만들지 않았으므로 해당 폴더에 데이터베이스를 만들려고했습니다. 그러나 이상한 것은 충돌 후 폴더가 생성 된 것입니다. 나는 두 가지 방법을 시도폴더를 삭제 한 후 mkdir()이 false를 반환합니다.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

: 내가 잘못 만들 수있는 어떤

f.mkdir(); 
f.mkdirs(); 

나는 권한이? 어떤 생각?

+0

나는 이것에 대해 많은 질문을 보았지만 그 중 누구도 나를 도왔습니다. –

+1

** 같은 폴더 **를 삭제하고 다시 만들지 말고 그냥 ** 비워 두지 않으시겠습니까? 더 똑똑하고 최적화 된 솔루션입니다. –

+0

나는 그것에 대해 생각해 봤지만, 내가 원하는 것은 모든 사용자 폴더를 완전히 삭제하는 것이다. 쓸모없는 폴더는 비어 있더라도 그다지 쓸모가 없다. 나는 이것이 "더러운"해결책이라고 생각한다. 비록 내가 그것을 고칠 수 없다면 나는 그것을 할 것이다. –

답변

0

폴더를 만들기위한 메서드를 호출하기 때문에 폴더가 생성되기 전에 해당 폴더에 DB를 만들려고한다고 생각합니다!

가능한 해결책

폴더를 성공적으로 만든 후에 데이터베이스를 만들어보십시오. 데이터베이스를 만드는 동안 해당 폴더/경로가 있는지 다시 한 번 확인하십시오.

+0

이전에 폴더를 만들려고했지만 말했듯이 mkdir이 작동하지 않고 false를 반환합니다. –

+0

mkdir 및 mkdirs는 디렉토리가 이미 존재하면 false를 반환하므로 실패의 원인이 될 수 있습니다. Java 7을 사용하는 경우 Files 클래스를 사용할 수 있습니다. 꽤 좋은 장소에서 IOException을 발생시킵니다. Files.createDirectory (file.toPath()); – Rohit

+0

Android에서 Java 7을 사용할 수 있습니까? 나는 그렇게 생각하지 않는다. –

3

나는 또한 동일한 문제에 직면했다. 그러나 마지막으로 해결책을 찾은 것으로 보입니다 (해결 방법 일 수 있음).

디렉터리를 삭제하면 이름을 바꾸고 삭제하십시오. 그런 다음 일반적으로 File.mkdirs()을 사용하여 디렉토리를 만듭니다. 이 잘 작동합니다. 내 경우에 테스트를 했어. 그것은 작동합니다!

public static final void renameAndDelete(File fileOrDirectory) { 
    File newFile = new File(fileOrDirectory.getParent() + File.separator 
       + "_" + fileOrDirectory.getName()); 
    fileOrDirectory.renameTo(newFile); 
    delete(newFile); 
} 
public static final void delete(File fileOrDirectory) { 
    if (fileOrDirectory.isDirectory()) 
     for (File child : fileOrDirectory.listFiles()) 
      delete(child); 

    fileOrDirectory.delete(); 
}