Android - добавить специфическую строку в текстовый файл

1

Эй, люди, У меня есть текстовый файл, который мне нужно добавить в мое приложение. Теперь я могу переписать весь файл, включающий изменения в определенную строку, но я надеюсь, что есть более эффективное решение. Я знаю номер строки, который мне нужно добавить, но я не уверен, как добраться до этой строки, желательно, не зацикливая все остальные, если это не единственный способ. Это то, что у меня есть до сих пор, который воссоздает весь файл: `

        try {
            FileOutputStream fOut = openFileOutput("tasklist.txt", MODE_APPEND);
            BufferedOutputStream buf = new BufferedOutputStream(fOut);

            OutputStreamWriter osw = new OutputStreamWriter(buf);
            BufferedWriter writer = new BufferedWriter(osw);

            for(int count = 0; count < str.size(); count++)
            {
                writer.write(str[count]);
                writer.write("\r\n");
            }

            writer.flush();
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(this, "Error saving txt file", Toast.LENGTH_SHORT);
        }`

Надеюсь, кто-то знает более эффективное решение. Спасибо.

Теги:

1 ответ

3

Есть несколько более чистых способов, но при обработке файлов нет более эффективного способа (что я знаю). Вы в основном переходите от начала и до конца, как вы это делали, и добавляете данные. Это то, как работает файл ввода/вывода (это не приложение Android или Java).

Тем не менее, вы можете попробовать FileWriter немного подобрать его (параметр "true" для ctor означает append):

FileWriter writer = new FileWriter(aFile, true));
try {
    writer.write("append here\n");
} finally {
   writer.close();
}

Следует помнить, что FileWriter использует кодировку по умолчанию для системы. Это должно быть хорошо на Android, но будьте осторожны с ним в целом.

Вот несколько хороших общих методов работы с чтением и записью файлов с Java.

Кроме того, в зависимости от того, что вы делаете с этим файлом, который вы добавляете (как часто вы редактируете один и тот же файл и из каких процессов), вам может потребоваться сделать его копию, а также справиться с fysnc, чтобы вы не потеряли данные на устройствах Android, использующих журналируемые файловые системы.

Чтобы сделать ваше приложение более эффективным, возможно, вы можете кэшировать данные в памяти и выписывать весь файл (а не добавлять) через определенные промежутки времени или когда вы закончите. Если у вас много данных, DB может быть даже уместным.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню