2013-09-04 1 views
1

У меня есть файл класса java с тремя списками массивов, один с типом String, один с типом Integer, а другой - ArrayList с типом (ArrayList (String)). Я должен написать эти эти arraylists к структуре в C с массивами символов, целыми числами и короткими и вывести файл в расширении specefic. Файл должен быть снова прочитан одним и тем же приложением. Каков наилучший способ передать данные из структуры java в c, а затем вывести структуру c в файл. СпасибоСопоставление данных переменных java с C Структуры и запись c совместимого файла

+0

Нет лучшего способа. Вам просто нужно выбрать формат файла, такой как CSV, XML, JSON, собственный формат, который можно прочитать с обеих сторон (Java, C) – Piro

+0

Я пробовал понимать буферы протокола google, но я не знаю, как это сделать, и лучший способ, который я имел в виду, как я должен это делать. Я должен написать java-структуры для c-совместимого файла, а lator - для чтения совместимого с c-файла файла в java-приложении. –

+0

Что означает «C-совместимый файл»? – hyde

ответ

1

Нет формата «Совместимый с C». Если у вас есть C-структуры, записанные непосредственно на файл диска, то они находятся в двоичном формате ad-hoc. Точный формат зависит от таких вещей, как packing and padding от структуры, byte order, размер слова процессора (например, 32 или 64 бит) и т.д.

Итак, начнем с определения формата, то забывают, что получают С.

Как только вы определили формат, вы можете написать программу для ее анализа на Java. Если он короткий с фиксированными записями длины, я бы, вероятно, создал класс, который внутри всего имеет только частный массив byte[], а затем методы для его управления, сохранения и загрузки.

+0

Это имеет для меня больше смысла. Спасибо, hyde. Я попробую определить структуру, прочитать и записать файл и вернуться. –

0

Предлагаю вам написать/прочитать данные в ByteBuffer, используя собственный порядок байтов. Остальное зависит от вас, как вы это делаете.

Библиотека, которая может помочь, это библиотека Javolution's Struct, которая поможет вам нарисовать структуры C на ByteBuffers. Это может помочь в различных правилах заполнения, т. Е. Точное расположение может быть не очевидным.

+0

Этот, кажется, более relavant. Спасибо, Питер, я попробую это и вернусь. Есть ли способ включить файл .c в проект java и вызвать функцию c из этого файла .java-класса –

+0

@techXploiter Да и нет. Вы можете включить его, но не таким образом, чтобы избежать необходимости перевода перевода с Java на C. После того, как вы его перевели, вы можете использовать его в собственном коде, но это вам действительно не поможет. –

+0

Это означает, что лучше всего сделать перевод, напишите файл и прочитайте его в обратном порядке, не включив в него собственный файл –

Смежные вопросы