>

하나 이상의 .db 가있는 경우 최신 SQLite 데이터베이스 (아래 스크린 샷, 11408102018000005를 얻고 싶습니다)를 SD 카드에 백업하려면 어떻게해야합니까?  파일?

참고 :

파일 형식이 동적입니다. 이미지의 마지막 숫자가 증가합니다.

이미지입니다 :

이것은 SQLite 데이터베이스를 복원 할 때 내 코드입니다.

private void restoreDB() {
    try {
        File[] sd = getContext().getExternalFilesDirs(null);
        if (sd[1].canWrite()) {
            File backupDB = new File(sd[1] + "/" + curControlNo);    //<--- what to put here. This is just a test path and name
            File currentDB = new File(getContext().getDatabasePath(DBHelper.DB_NAME).getPath());
            FileChannel src = new FileInputStream(backupDB).getChannel();
            FileChannel dst = new FileOutputStream(currentDB).getChannel();
            dst.transferFrom(src, 0, src.size());
            src.close();
            dst.close();
            Toast.makeText(getContext(), "Import Successful!", Toast.LENGTH_SHORT).show();
            openHome();
        }
    } catch (Throwable e) {
        Toast.makeText(getContext(), "Import Failed!", Toast.LENGTH_SHORT).show();
        e.printStackTrace();
    }
}

  • 답변 # 1

    아래와 같이 저장하려는 파일을 생성하고 DB 이름을 전달해야합니다 :

    File backupDB = new File(sd[1], DBHelper.DB_NAME);
    
    

    작동하길 바랍니다.

  • 답변 # 2

    파일 listFiles 를 사용할 수 있습니다. 메소드를 사용하여 디렉토리에있는 파일의 배열을 가져 와서 배열을 정렬하여 목록에서 최신 항목을 먼저 찾은 다음 배열의 첫 번째 요소를 사용하십시오. 예 :

    File[] dirlist = sd.listFiles(); //<<<<<<<< gets the list of files
    
    

관련 자료

  • 이전 Angular 6 typescript의 객체 배열에서 단일 속성에 어떻게 액세스합니까?
  • 다음 JavaScript에서 목록 할당은 어떻게 작동합니까?