Скопировать файл из res / raw в sd при первом запуске

У меня проблема с приведенным ниже кодом, он скопирует файл на внутренний SD-диск. Это работает, проблема в том, что он будет работать только при втором запуске приложения. Мне нужно скопировать при первом запуске. Я понятия не имею, что делаю не так, может кто-нибудь поможет.

private void CopyPak()
{

try {
    InputStream in = getResources().openRawResource(R.raw.bor);
    File outFolder = new File(Environment.getExternalStorageDirectory() + "/OpenBOR/Paks");
    File outFile = new File(outFolder, "bor.pak");
    if (!outFolder.exists()){
    outFolder.mkdir();
    }       
    FileOutputStream out = new FileOutputStream(outFile);
    copyFile(in, out);
    in.close();
    in = null;
    out.flush();
    out.close();
    out = null;
} catch (IOException e) {
    Log.e("tag", "Failed to copy asset file: ", e);
}
}

private void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
    out.write(buffer, 0, read);
}
}

Вот необходимый импорт.

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;

какие-либо ошибки в logcat при первом запуске?

Vladyslav Matviienko 05.04.2018 14:35

также как это связано с тегами sdk и android-ndk?

Vladyslav Matviienko 05.04.2018 14:35

В моем проекте используются как sdk, так и ndk, ядро ​​написано на C!

malik 06.04.2018 22:11

хорошо, но android-sdk! = sdk, а в вашем вопросе нет ничего о ndk.

Vladyslav Matviienko 06.04.2018 22:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
28
1

Ответы 1

Обнаружил ошибку. Мне пришлось заменить mkdir на mkdirs, так как я создавал более одной папки.

Другие вопросы по теме