Как записать массив типа long в файле на java? и потом его прочитать
Насколько я знаю FileInputStream записывает побайтно а у лонга длина 8байтов
или скажем какой метод есть чтобы переделать 1лонг в массив из 8байтов
Как записать массив типа long в файле? (java)
Модератор: Модераторы разделов
-
AMD
- Сообщения: 478
- Статус: Maestro
- ОС: Linux Kubuntu 7.10
-
dey
- Сообщения: 335
- ОС: OpenSuse 11.1
Re: Как записать массив типа long в файле? (java)
Есть специальные потоки для записи определенных типов данных, DataOutputStream к примеру:
Код: Выделить всё
//инициализируем выходной поток
DataOutputStream out=new DataOutputStream(new FileOutputStream("/home/user/file.txt"));
//запись в файл
for(long e:long_array)
out.writeLong(e);
//закрытие потока
out.close();В сознательных действиях должен присутствовать существенный неалгоритмический компонент.
Roger Penrose,The Emperor's New Mind
Roger Penrose,The Emperor's New Mind
-
AMD
- Сообщения: 478
- Статус: Maestro
- ОС: Linux Kubuntu 7.10
Re: Как записать массив типа long в файле? (java)
dey писал(а): ↑05.06.2008 09:37Есть специальные потоки для записи определенных типов данных, DataOutputStream к примеру:Код: Выделить всё
//инициализируем выходной поток DataOutputStream out=new DataOutputStream(new FileOutputStream("/home/user/file.txt")); //запись в файл for(long e:long_array) out.writeLong(e); //закрытие потока out.close();
попробую этот метод
Но не очень то устраивает
я в файле хочу записывать разные типы данных
int
short
long
float
double
String
конечно удобнее все конвертировать все в байты сохранить а при чтение загрузить обратно байты и отконвертировать в соответствующий тип
Мне нужно контролировать позицию курсора в файле побайтно
Ну а удобнее всего записывать переменную того типа которую есть к примеру если запишу переменную лонг то курсор должен сместится на 8 байтов
тоже самое при чтении
-
dey
- Сообщения: 335
- ОС: OpenSuse 11.1
Re: Как записать массив типа long в файле? (java)
Может я не понял постановки задачи но вообще то у данного класса есть свои методы для записи каждого типа данных, как то writeInt(), writeDouble(), writeShort() и т.д.
В сознательных действиях должен присутствовать существенный неалгоритмический компонент.
Roger Penrose,The Emperor's New Mind
Roger Penrose,The Emperor's New Mind
-
AMD
- Сообщения: 478
- Статус: Maestro
- ОС: Linux Kubuntu 7.10
Re: Как записать массив типа long в файле? (java)
Хорошо опишу ситуацию что хочу сделать
маленький файл с базой данных
1 колонка long (8byte)
2 колонка String 20 simvolov (40byte в unicode)
3 колонка вouble (8byte)
итого длина строки 56bytes
в базу записываю по строки и читаю по строкам
база предполагает что я могу заменить значения в предыдущих записях
к примеру имею в базе 10 записей итого длина файла 560 bytes
хочу поменять значение в 3колонке строка 5 это будет байт 272 (4*56+8+20*2)
и сдесь записываю out.writeDouble(v)
но как мне перемещять курсор в эту позицию файла или указать в какую позицию записывать?
вроде только RandomAccessFile имеет методы getFilePointer( ) для нахождения местоположения в файле, seek( ) для перемещения в новую точку в файле
но DataOutputStream не работает с RandomAccessFile
маленький файл с базой данных
1 колонка long (8byte)
2 колонка String 20 simvolov (40byte в unicode)
3 колонка вouble (8byte)
итого длина строки 56bytes
в базу записываю по строки и читаю по строкам
база предполагает что я могу заменить значения в предыдущих записях
к примеру имею в базе 10 записей итого длина файла 560 bytes
хочу поменять значение в 3колонке строка 5 это будет байт 272 (4*56+8+20*2)
и сдесь записываю out.writeDouble(v)
но как мне перемещять курсор в эту позицию файла или указать в какую позицию записывать?
вроде только RandomAccessFile имеет методы getFilePointer( ) для нахождения местоположения в файле, seek( ) для перемещения в новую точку в файле
но DataOutputStream не работает с RandomAccessFile
-
AMD
- Сообщения: 478
- Статус: Maestro
- ОС: Linux Kubuntu 7.10
Re: Как записать массив типа long в файле? (java)
RandomAccessFile имеет методы writeDouble writeLong и тд. так что разобрался