У меня есть .txt file в моей папке Assets. Я пытался с помощью BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(getAssets().open("---.txt")));

Я получаю сообщение об ошибке (getAssets().open("---.txt")));, говоря

OutputStreamWriter(java.io.OutputStream) in OutputStreamWriter cannot be applied to (java.io.InputStream)

Я не знаю, как написать в этот файл, и мне нужна помощь. Также было бы хорошо, если бы я знал, как стереть все, что уже есть в этом файле, и записать в пустой файл ... (извините за непонятность).

Я знаю, что могу сделать это, используя PrintWriter на ПК, но сейчас я изучаю Android.

1
Eddie 3 Апр 2017 в 14:19

2 ответа

Лучший ответ

Вы не можете записывать файлы в ресурсы или в любой необработанный каталог.

Где он будет расположен в файловой системе Android. Так что напишите ваш текстовый файл во внутреннем ИЛИ внешнем хранилище.

2
ITSGuru 3 Апр 2017 в 11:25

Папка ресурсов доступна только для чтения, а также ее содержимое. Если вы хотите изменить и сохранить любые изменения в активе, рассмотрите возможность сохранения копии в хранилище устройства, используя Context.openFileOutput(). Вот пример без обработки исключений:

// copy the asset to storage

InputStream assetIs = getAssets().open(filename);
OutputStream copyOs = openFileOutput(filename, MODE_PRIVATE);

byte[] buffer = new byte[4096];
int bytesRead;

while ((bytesRead = assetIs.read(buffer)) != -1) {
    copyOs.write(buffer, 0, bytesRead);
}

assetIs.close();
copyOs.close();

// now you can open and modify the copy

copyOs = openFileOutput(filename, MODE_APPEND); 

BufferedWriter writer =
        new BufferedWriter(
                new OutputStreamWriter(copyOs));
0
nandsito 3 Апр 2017 в 11:34