Как перезаписать файл бд

324
05 сентября 2017, 09:27

Есть такая задача: с сервера получить файл базы данных(в формате .db) и перезаписать старый файл на новый.

Пробую так:

@Override
public void onSuccess(int statusCode, cz.msebera.android.httpclient.Header[] headers,
                                      File file) {
    if (statusCode != 200) {
        Toast.makeText(SettingsActivity.this, getResources().getText(R.string.error),
                                Toast.LENGTH_SHORT).show();
        return;
    }
    Log.v(TAG, "response - success - " + file);
    try {
        FileInputStream input = new FileInputStream(file);
        String outputFile = String.valueOf(getApplicationContext().getDatabasePath("name_db"));
        OutputStream output = new FileOutputStream(outputFile);
        byte[] buffer = new byte[input.available()];
        int i;
        while ((i = input.read(buffer)) > 0) {
             output.write(buffer, 0, i);
        }
        output.flush();
        output.close();
        input.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    pd.cancel();
}

Но это не работает. Как лучше это реализовать?

На всякий случай код на отправку файла бд на сервер:

 RequestParams params_ = new RequestParams();
 AsyncHttpClient client = new AsyncHttpClient(true, 80, 443);
 Context context = getApplicationContext();
 File dbFile = new File(String.valueOf(context.getDatabasePath("name_db")));
 try {
      params_.put("db", dbFile);
 } catch(FileNotFoundException e) {
      Log.v(TAG, "error - file not found");
 }
 client.post("example.com", params_, new JsonHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, cz.msebera.android.httpclient.Header[] headers, JSONObject json) {
             Log.v(TAG, "response -- " + json);
             try {
                  if (0 == json.getInt("status")) {
                      Toast.makeText(SettingsActivity.this, getResources().getText(R.string.successfully),
                                    Toast.LENGTH_SHORT).show();
                  } else {
                      Toast.makeText(SettingsActivity.this, getResources().getText(R.string.error),
                                    Toast.LENGTH_SHORT).show();
                  }
              } catch (JSONException e) {
                  e.printStackTrace();
              }
              pd.cancel();
         }
   });

P.S. Попробовал вот так:

(new DB(getApplicationContext())).close();
File aFile = file;
String path = String.valueOf(getApplicationContext().getDatabasePath("targ‌​ets_db")) + ".db";
if (aFile.renameTo(new File(path))) {
    Log.v(TAG, "File is moved successful!");
}

В логах пишет, что файл был перемещен, но однако файл бд не изменился на нужный(бекапешный).

READ ALSO
dispatcher-servlet.xml

dispatcher-servlet.xml

всем привет,выдает такую ошибку

331
Проверка на ввод чисел

Проверка на ввод чисел

Как лучше всего организовать проверку на ввод отрицательного числа (они должны отсеиваться), чтоб это сильно не загромождало код, так как...

316
Выход из многоуровневого цикла

Выход из многоуровневого цикла

Есть ли в java универсальный способ выйти из многоуровневого цикла? Или же необходимо составлять грамотное условие для каждого уровня? Например:

279