トランザクションを管理するためのアプリを作成しました。現在、ドロップボックス バックアップを追加しています。データベースファイルをドロップボックスにアップロードすることでこれを行います(正しく表示されているようです)。次に、ファイルを再度ダウンロードして、既存のデータベースを上書きします。これを行うと、データベースはファイル 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);
}
}
}