_Night_Scream_
77 / 75 / 8
Регистрация: 08.08.2013
Сообщений: 619
|
|
#1 | |
Работа с файлами до 10мб - Программирование Android28.03.2016, 09:57. Просмотров 274. Ответов 4
Метки нет Все метки)
(
Добрый день
![]() Подскажите способы\технологии работы с файлами на андроид решающие мою задачу. Мне необходимо писать в файл раз в секунду ~50 байт текста, причем нужно организовать перезапись файла по кольцу и ограничить размер файла в 10мб. Тоесть добавлять в файл строки пока он не вырастит до 10мб, а после начать заново перезапись строк. Сохраняться в файл будут сформированные строки (String + \r\n). ![]() Добавлено через 10 часов 41 минуту ![]()
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
28.03.2016, 09:57 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с файлами до 10мб (Программирование Android):
4
Работа с файлами - Программирование Android
Работа с файлами - Программирование Android Работа с файлами - Программирование Android Работа с файлами на эмуляторе - Программирование Android Работа с файлами, музыкой - Программирование Android |
Pablito
|
|
28.03.2016, 10:57 | #2 |
а почему одним файлом и 10 мб, почему не 10 по 1 мб которые можно брать по-очереди и держать в памяти только 1?
создать массив char[] = new char[1_000_000]; (или byte х.з. что там в задаче на самом деле) и писать в него, а как заполнится - скидывать на диск, при заполнении последнего, десятого массива - брать первый и писать снова, писанины на пол часа 50 байт каждую секунду это 27 часов непрерывной записи (если предположить что там по 50 байт, а не по 100 потому что юникод)
1
|
_Night_Scream_
77 / 75 / 8
Регистрация: 08.08.2013
Сообщений: 619
|
|
28.03.2016, 11:09 [ТС] | #3 |
Паблито, необходим один файл, он на самом деле будет выступать логом для датчика.
Около 25 символов в строке (юникод) ~50 байт. Я думаю о StringBuilder, хранить несколько записей в оперативке, потом писать в файл. Для реализации перезаписи файла смотрю на RandomAccessFile, туда ли я смотрю?
0
|
Pablito
|
28.03.2016, 11:14
#4
|
Не по теме: теоретически да, но я не работал с RandomAccessFile, поэтому промолчу
0
|
_Night_Scream_
77 / 75 / 8
Регистрация: 08.08.2013
Сообщений: 619
|
|
29.03.2016, 11:16 [ТС] | #5 |
Поковырял RandomAccessFile, вероятно это то, что нужно.
Возник в целом вопрос, как сделать запись по кольцу или shift mode. Задача - иметь постоянно обновляющийся архив, который будет работать автономно. Хотелось бы услышать ребят, которые работали с файлами на java. Я придумал такое решение. Файл пишется строками, есть всегда перевод каретки, строки имеют разную длину. Писать append нет проблем, перед записью проверять размер файла и если он больше 10мб, то очистить первые 10% Тут не понятно как сделать это быстро, в самом файле никак нельзя удалять байты\символы, можно только с конца, мне же надо первые ~10 000 строчек удалить из файла, я так понимаю делается это только копированием в новый файл без этих данных, но это занимает весьма много времени, обязательно надо делать в доп. потоке. По сути надо быстро скопировать файл\перезаписать без первой его части, чтобы он не переполнялся. Как это сделать быстро\удобно\правильно? Буду благодарен за любые мысли, а за готовую реализацию готов поощрить печенькой.
0
|
29.03.2016, 11:16 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
29.03.2016, 11:16 |
Привет! Вот еще темы с ответами:
5
Работа с файлами (radstudio c++builder) - Программирование Android Eclipse: работа с текстовыми файлами - Программирование Android Работа с txt файлами в Android. Путь к файлу - Программирование Android
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |