2013-08-10 3 views
0

내 앱에서 sdcard에 폴더와 xml 파일을 만듭니다. 그러나 시간이 지나면 폴더가 삭제되고 파일이 삭제됩니다. 이 파일은 앱의 데이터 백업을 저장하는 데 사용됩니다.Android, 폴더가 잠시 후 삭제됨

백업을 만드는 데 새로운 것이 필요하지만 그 이유에 대한 설명은 필요하지 않습니다. 폴더는 sdcard의 루트에 'backup'이라는 이름으로 생성됩니다.

boolean parsed = false; 
File file = new File(Environment.getExternalStorageDirectory() + "/backup/tet/" + filename); 
fis = new FileInputStream(file); 
byte[] buffer = new byte[(int) file.length()]; 
fis.read(buffer, 0, (int) file.length()); 
parsed = decodeDb(ctx, new String(buffer)); 
fis.close(); 

난 당신이 문제를 논의하기 위해 나를 도울 수 있기를 바랍니다 :

File path = new File(Environment.getExternalStorageDirectory() + "/backup/tet/"); 
path.mkdirs(); 
File backupdir = new File(path, getDateTime() + ".xml"); 
fos = new FileOutputStream(backupdir); 
fos.write(encodeDb(ctx).getBytes()); 
fos.close(); 

이 내가 파일을 읽는 방법입니다 : 내가 폴더와 파일을 만드는 방법

이입니다.

답변

1

다른 앱에서도 "backup"이라는 폴더를 사용하고 삭제할 수 있습니까? 폴더 이름을 다르게 지정하여 앱과 관련이 있는지 확인합니다.

+0

이것은 좋은 생각입니다. 의견을 보내 주셔서 감사 드리며이를 시도하고 이것이 문제가되는지 확인하겠습니다. – wiruzman

1

앱에 새 폴더를 만드는 것은 일반적으로 권장되지 않습니다. Ialya와 같은 폴더를 사용하는 다른 앱은 물론 SD 카드가 어수선하게 만들어 지기도합니다. getExternalFilesDir() 명령을 사용하는 것이 가장 좋습니다. 여기에 구글의 developer guides 무슨 말을했는지의 :

는 API 레벨 8 이상을 사용하는 경우, 당신은 당신의 파일을 저장해야합니다 외부 저장 디렉토리를 나타내는 파일을 열 getExternalFilesDir()를 사용합니다. 이 메소드는 DIRECTORY_MUSIC 및 DIRECTORY_RINGTONES와 같이 원하는 하위 디렉토리 유형을 지정하는 유형 매개 변수를 사용합니다 (응용 프로그램의 파일 디렉토리의 루트를 수신하려면 null을 전달). 이 메소드는 필요한 경우 적절한 디렉토리를 작성합니다. 디렉토리 유형을 지정하면 안드로이드의 미디어 스캐너가 시스템의 파일을 적절하게 분류하도록합니다 (예 : 벨소리는 음악이 아니라 벨소리로 식별됩니다). 사용자가 응용 프로그램을 제거하면이 디렉토리와 모든 내용이 삭제됩니다.

+0

문제는 내가 제거한 후에 백업 파일을 보관하려고한다는 것입니다. API8 이상은 앱에서 만든 폴더를 삭제합니다. – wiruzman

관련 문제