Используйте FileWriter, чтобы написать текст в начале - PullRequest
4 голосов
/ 21 февраля 2012

Hy, я использую FileWriter, чтобы написать какой-то текст на SD-карту, например,

FileWriter write = new FileWriter(Environment.getExternalStorageDirectory().toString() + "text.txt", true);
write.append("This is first written");
write.close();

Теперь, когда я пишу какой-то другой текст

FileWriter write = new FileWriter(Environment.getExternalStorageDirectory().toString() + "text.txt", true);
write.append("This is second written");
write.close();

И посмотрите на этофайл, это выглядит так

This is first written
This is second writtn

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

Ответы [ 3 ]

1 голос
/ 21 февраля 2012

Контролируете ли вы просмотр файла, в отличие от пользователя, который использует какую-то другую программу для его просмотра?Если так, то как насчет отображения содержимого файла в обратном порядке?

1 голос
/ 21 февраля 2012

Я не знаю о классе, доступном по умолчанию в Android, который бы делал это.

Даже если он есть, то, если подумать, единственный возможный способ его работы - этото, что вы говорите, сначала прочитайте текущее содержимое, добавьте данные, которые нужно добавить, и затем запишите обратно.

Вы можете создать класс, который расширяет FileWriter, и делает это сначала открытием / чтением / закрытием файла, а затемоткройте его снова с append, установленным на false, перед записью новых данных с добавленными к нему предыдущими данными.

Идея Sparky об использовании RandomAccessFile является альтернативой, потому что вы можете, по крайней мере, искатьначало перед записью данных (устранение необходимости сначала закрывать файл перед повторным открытием).НО вам все равно придется сначала прочитать предыдущие данные, так как поиск в начале, а затем запись не «вытолкнет» существующие данные, а просто перезапишет их.

0 голосов
/ 21 февраля 2012

Я объясню вам здесь.

Допустим, я записал некоторые данные в файл, и теперь данные выглядят

 21.02.2012, 11:43<#>-<#>88<#>-
 21.02.2012, 13:12<#>-<#>80<#>-
 21.02.2012, 19:36<#>-<#>61<#>-
 22.02.2012, 07:15<#>-<#>50<#>-
 23.02.2012, 12:14<#>-<#>44<#>-

, теперь в моем приложении я читаю текст иразделить его на <#>

 String split = readen.split("<#>");

Я хочу отобразить текст с помощью WebView и отобразить данные в таблице так, чтобы это выглядело так

----------------------
| 23.02.2012         |
----------------------
| 12:14 | - | 44 | - |
----------------------

----------------------
| 22.02.2012         |
----------------------
| 07:15 | - | 50 | - |
----------------------

----------------------
| 21.02.2012         |
----------------------
| 19:36 | - | 61 | - |
| 13:12 | - | 80 | - |
| 11:43 | - | 88 | - |
----------------------

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...