Как записать массив типа long в файле? (java)

Модератор: Модераторы разделов

Аватара пользователя
AMD
Сообщения: 478
Статус: Maestro
ОС: Linux Kubuntu 7.10

Как записать массив типа long в файле? (java)

Сообщение AMD »

Как записать массив типа long в файле на java? и потом его прочитать

Насколько я знаю FileInputStream записывает побайтно а у лонга длина 8байтов
или скажем какой метод есть чтобы переделать 1лонг в массив из 8байтов
Спасибо сказали:
Аватара пользователя
dey
Сообщения: 335
ОС: OpenSuse 11.1

Re: Как записать массив типа long в файле? (java)

Сообщение dey »

Есть специальные потоки для записи определенных типов данных, 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
Спасибо сказали:
Аватара пользователя
AMD
Сообщения: 478
Статус: Maestro
ОС: Linux Kubuntu 7.10

Re: Как записать массив типа long в файле? (java)

Сообщение AMD »

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)

Сообщение dey »

AMD писал(а):
05.06.2008 09:50
[Не очень то устраивает
я в файле хочу записывать разные типы данных
int
short
long
float
double
String

конечно удобнее все конвертировать все в байты сохранить а при чтение загрузить обратно байты и отконвертировать в соответствующий тип

Может я не понял постановки задачи но вообще то у данного класса есть свои методы для записи каждого типа данных, как то writeInt(), writeDouble(), writeShort() и т.д.
В сознательных действиях должен присутствовать существенный неалгоритмический компонент.
Roger Penrose,The Emperor's New Mind
Спасибо сказали:
Аватара пользователя
AMD
Сообщения: 478
Статус: Maestro
ОС: Linux Kubuntu 7.10

Re: Как записать массив типа long в файле? (java)

Сообщение AMD »

Хорошо опишу ситуацию что хочу сделать

маленький файл с базой данных
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)

Сообщение AMD »

RandomAccessFile имеет методы writeDouble writeLong и тд. так что разобрался
Спасибо сказали: