C # эквивалентно функциям «Open» и «Put» в VB6 - PullRequest
2 голосов
/ 20 июня 2011

Я постараюсь сделать это как можно проще.Этот вопрос не просто включает чтение и запись байтов.Я ищу точный перевод между этим кодом VB6 и кодом C #.Я знаю, что это не всегда возможно, но я уверен, что у кого-то есть идеи!

Код VB6 и объяснение:

Приведенный ниже код записывает данные в специфичные часть файла.

[ Put [#]filenumber, [byte position], varname ].

Именно в * байтовой позиции * мне трудно разобраться - и помощь в этом была бы очень признательна!

Dim file, stringA as string

Open file for Binary As #1
    lPos = 10,000
    stringA = "ThisIsMyData"
Put #1, lPos, stringA

Close #1

Итак, я ищу некоторыепомогите с позицией байта, еще раз.В этом примере позиция байта была представлена ​​lPos.

EDIT FOR HENK -

Я буду читать двоичные данные.В этих двоичных данных есть некоторые символы, которые мне понадобятся для замены .По этой причине я буду использовать функцию VB6 instr для получения этих данных (их длины ранее известны).Затем я буду использовать функцию Vb6 Put , чтобы записать эти данные в найденную позицию.Это заменит старые данные новыми данными.Я надеюсь, что это помогло!

Если это кому-нибудь поможет, здесь - дополнительная информация о функции Put.

Большое спасибо, Эван

Ответы [ 3 ]

4 голосов
/ 20 июня 2011

Разве вы не можете использовать BinaryWriter ?

Например:

FileStream fs = new FileStream(file, FileMode.Open);
BinaryWriter w = new BinaryWriter(fs);

w.Seek(10000, SeekOrigin.Origin);
w.Write(encoding.GetBytes("ThisIsMyData"));

w.Flush();
w.Close();
fs.Close();
2 голосов
/ 20 июня 2011

Вы можете сделать это, используя StreamReader и StreamWriter.

Я бы попробовал что-то вроде этого:

  • Считайте первые n бит и запишите их в новый поток с помощью StreamWriter.
  • Используя тот же StreamWriter, напишите новые биты, которые вы хотите вставить.
  • Наконец, запишите остальные биты из вашего StreamReader.

Этот вопрос не совсем подходит, однако он показывает похожую технику с использованием текста (не двоичных данных): Вставка данных в текстовый файл

0 голосов
/ 20 июня 2011

Взгляните на класс StreamWriter , особенно на эту перегрузку метода записи , который позволяет начать запись в определенное место в потоке.

...