|
как это сделать на Java?
|
|||
---|---|---|---|
#18+
с Java только начал разбираться, и решил разобрать такой примерчик. Как лучше на Java считать массив структур из файла, кот. записан скажем вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
Интересует как организовать ( через вектор или object ) java-код , аналогичный тому, что закоментирован в данном Си-примере. Еще 2-ой вопрос Есть ли в java альтернатива опции для задания выравнивания границ байтов, навроде того: # pragma pack (push) # pragma pack (1) typedef struct { char c[6]; int i; }ST1; # pragma pack (pop) Буду благодарен за ответ с примером. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2004, 08:18 |
|
как это сделать на Java?
|
|||
---|---|---|---|
#18+
надо будет создать буффер - массив байтов потом записать в него содержимое файла и из буфера уже заполнять соотвеструющий java-класс например для установки int потребуеться dept.deptno = ( (buffer[offset++]&0xFF)<<24 ) | ( (buffer[offset++]&0xFF)<<16 ) | ( (buffer[offset++]&0xFF)<<8 ) | ( (buffer[offset++]&0xFF) ) сам уже давно сделал отдельный класс для считывания int, short, char, строк и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2004, 11:02 |
|
как это сделать на Java?
|
|||
---|---|---|---|
#18+
Я так понял что задача состоит в основном в поддержке уже существующего решения т.е. есть множество двоичных файлов в виде определенном виде и java-код должен их читать тогда дейтсвительно так как сказал предыдущий оратор. Дело в том, что в C++ способ хранения структур в файлах был такой и ничего другого не было, но java имеет множество новых концепций попробуй сначала сериализацию во всех вариациях, потом хранение в виде properties файлов ну и наконец с помощью документов xml и заниматься его анализом с помощью apache решений. еще удобно сделать хранение данных в виде xml а по ним создавать классы есть castor, что-то еще, забыл, давно не программил. Может продолжит кто еще. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2004, 16:11 |
|
как это сделать на Java?
|
|||
---|---|---|---|
#18+
>>Есть ли в java альтернатива опции для задания выравнивания границ байтов, >> навроде того: ну вообще-то сама концепция жабы этому противоречит, если у тебя есть переменная типа byte (8 бит) то это значит только что при различных мат и бинарных операциях она будет себя вести как байт, но как именно она в памяти и внутри jvm будет представляться это никого не должно интересовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2004, 16:14 |
|
как это сделать на Java?
|
|||
---|---|---|---|
#18+
да нет, с задачей там все не совсем так на самом деле. Просто в промышленной базе есть одна табличка где в поле типа varchar2(2000) впихнули си-шным кодом массив структур. Ну допустим из servlet-а через JDBC я все поля прочитал, а это одно мне как разгребсти, думал в java это как то несложно будет, а оказалось вон оно что. Придется искать какое-то другое решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2004, 16:43 |
|
как это сделать на Java?
|
|||
---|---|---|---|
#18+
Просто в промышленной базе есть одна табличка где в поле типа varchar2(2000) впихнули си-шным кодом массив структур. Ну допустим из servlet-а через JDBC я все поля прочитал, а это одно мне как разгребсти, думал в java это как то несложно будет, а оказалось вон оно что. Придется искать какое-то другое решение. чего тут искать. прочитал поле. да? например, Код: plaintext
сама структура DEPT не что иное как отражение в массив байт: Код: plaintext
ну и все. читай циклом массив data2000: Код: plaintext 1. 2. 3.
это самое простое решение. можно пойти дальше, создав класс работающий с массивом data2000 как с потоком (stream) и как поток его представляющий. или не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2004, 11:34 |
|
|
start [/forum/topic.php?fid=59&msg=32435043&tid=2154280]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 261ms |
total: | 399ms |
0 / 0 |