Запись в двоичный файл на C ++ и C # - PullRequest
1 голос
/ 17 сентября 2009

У меня 2 приложения.Один в C ++ (windows) открывает двоичный файл и читает только из него, я использую:

fstream m_fsDataIN.open("C:\TTT", ios::in | ios::binary | ios::app);

, а второе приложение (в C #) открывает файл и записывает в него.Я использую:

byte[] b = ... //have a binary data
System.IO.BinaryWriter bw = new System.IO.BinaryWriter(
                        System.IO.File.Open(@"C:\TTT",
                        System.IO.FileMode.Append,
                        System.IO.FileAccess.Write,
                        System.IO.FileShare.ReadWrite));
bw.Write(b);
bw.Flush();
bw.Close();

Проблема в том, что 8 первых байтов записаны неправильно, по сравнению с тем, что появляется в массиве b.

Когда я открываю файл в приложении C #, используя System.IO.FileMode.Append, он работает нормально.

Я проверил в приложении и записал неверные 8 байтов.

Я хочу добавить, что первые 8 байтов - это 2 счетчика, каждый из которых был создан с использованиемIPAddressHostToNetworkAddress.

Я думаю, что проблема в приложении C ++, в том, как я открываю файл.

Справка, Thnaks

Ответы [ 2 ]

0 голосов
/ 23 сентября 2009

Проблема была в приложении C ++. Программа содержала конфигурацию, которая производила другой обработчик файла. Используя Process Explorer, я узнал об этом. Удаление конфигурации этого дополнительного обработчика файлов решило проблему.

0 голосов
/ 17 сентября 2009

Вы открыли это очень хорошо. Но как ты это читаешь? Я думаю, что вам нужно позвонить ntohl на стороне C++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...