Может ли Async Task писать во внутреннюю память андроида? - PullRequest
0 голосов
/ 18 октября 2018

Привет мне нужно скачать файл с URL-адреса и сохранить во внутреннем хранилище, поэтому процесс загрузки выполняется в асинхронной задаче.Сначала я попытался записать строку в файл с помощью асинхронной задачи, но выдает ошибку: не удалось создать файл oat.Тот же код работает без задачи, поэтому мой вопрос заключается в том, что я должен загрузить файл во внешнее хранилище и после перемещения во внутреннее?

    private void writeInFile() {
    FileOutputStream output = null;
    String text = "TEXT";
    try {
        output = openFileOutput("nameFile.abc",Context.MODE_PRIVATE);

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }


    try {
        output.write(text.getBytes());
        output.flush();
        output.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

Но если я вызываю эту функцию в doInBackground класса, расширяющего AsyncTask, я получаюошибка.

    LicenzaTask mt = new LicenzaTask(this);
    mt.execute();


public class LicenzaTask extends AsyncTask<Void, Void, Void> {

private Context mContext;

public LicenzaTask(MainActivity mainActivity) {
    mContext = mainActivity;
}

@Override
protected Void doInBackground(Void... voids) {

    modifyFile();

    return null;
}


private void modifyFile() {
    File file = new File(mContext.getFilesDir() + "nome.abc");
    String text = "text";
    BufferedWriter output = null;
    try {
        output = new BufferedWriter(new FileWriter(file));
        output.write(text);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (output != null) {
            try {
                output.close();
            } catch (IOException e) {
            }
        }
        }
    }
...