0

トランザクションを管理するためのアプリを作成しました。現在、ドロップボックス バックアップを追加しています。データベースファイルをドロップボックスにアップロードすることでこれを行います(正しく表示されているようです)。次に、ファイルを再度ダウンロードして、既存のデータベースを上書きします。これを行うと、データベースはファイル ei として保存されます。context.fileList(); によって一覧表示されます。context.databaseList(); の代わりに データベース ファイルを適切な場所に配置するにはどうすればよいですか?

関連すると思われるコードは次のとおりです。

private static class Downloader extends AsyncTask<Integer, Integer, Boolean>{
    Context context;
    @Override
    protected void onPreExecute(){
        context = SpendoBase.getContext();
    }
    @Override
    protected Boolean doInBackground(Integer... arg0) {
        System.out.println("DoInBackground:");
        try {
            List<DropboxAPI.Entry> entries = mDBApi.metadata("/", -1, null, true, null).contents;
            File file;
            FileOutputStream os;
            int count = 0;
            for(DropboxAPI.Entry entry: entries){
                count++;
                System.out.println("Entry.path(): " + entry.path  + " " + count + "/" + entries.size());
                file = new File(entry.path);
                System.out.println("1");
                os = context.openFileOutput(file.getName(), Context.MODE_PRIVATE);
                System.out.println("2");
                DropboxFileInfo info = mDBApi.getFile(entry.path, null, os, null);
                os.flush();
                os.close();
                System.out.println("3 " + info);
            }

        } catch (DropboxException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;
    }
}

private static class Uploader extends AsyncTask<Integer, Integer, Boolean>{
    String[] databaseList;
    Context context;
    @Override
    protected void onPreExecute(){
        context = SpendoBase.getContext();
        databaseList = context.databaseList();
    }
    @Override
    protected Boolean doInBackground(Integer... params) {
        for(String dbName: databaseList){
            try {
                File f = context.getDatabasePath(dbName);
                FileInputStream  fis = new FileInputStream(f.getPath());
                mDBApi.putFileOverwrite("/" + dbName, fis, f.length(), null);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (DropboxException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

} 
private static class MetaReader extends AsyncTask<Integer, Integer, List<String>>{

    @Override
    protected List<String> doInBackground(Integer... arg0) {
        try {

            List<String> result = new Vector<String>();
            DropboxAPI.Entry existingEntry = mDBApi.metadata("/", -1, null, true, null);
            List<DropboxAPI.Entry> temp = existingEntry.contents;
            for(int i = 0; i < temp.size(); i++){
                File f = new File(temp.get(i).path);
                result.add(f.getName());
            }
            return result;
         } catch (DropboxException e) {
             System.out.println("Something went wrong: " + e);
         }
        return null;
    }
    @Override
    protected void onPostExecute(List<String> result){
        for(String str:result){
            System.out.println(str);
        }
    }
}
4

3 に答える 3