Запишите все биты в C # - PullRequest
0 голосов
/ 15 января 2010

Как я могу записать все биты файла, используя c #? Например, запись 0 во все биты

Пожалуйста, предоставьте мне образец

Ответы [ 6 ]

6 голосов
/ 15 января 2010

Я не уверен, почему вы хотите это сделать, но это перезапишет файл с данными такой же длины, но содержит нулевые байтовые значения:

File.WriteAllBytes(filePath, new byte[new FileInfo(filePath).Length]);
2 голосов
/ 15 января 2010

Определенно имеет неприятный запах домашней работы к нему.

Подсказка - подумайте, почему кто-то может захотеть это сделать. Простое удаление файла и замена на файл с нулевыми значениями правильной длины может оказаться не тем, что вам нужно.

1 голос
/ 15 января 2010

Рассмотрите возможность использования BinaryWriter, доступного в .NET Framework

using(BinaryWriter binWriter =
            new BinaryWriter(File.Open(fileName, FileMode.Create)))
        {
            binWriter.Write("Hello world");

        }
1 голос
/ 15 января 2010

Посмотрите на System.IO.FileInfo; вам нужно будет открыть доступный для записи поток для интересующего вас файла, а затем записать в него столько байтов (со значением 0 в вашем примере), сколько уже есть в файле (что можно определить с помощью FileInfo.Length) , Обязательно избавьтесь от потока, как только вы закончите с ним - using конструкции полезны для этой цели.

0 голосов
/ 15 января 2010

Когда вы говорите записать все биты в файл, я предполагаю, что вы имеете в виду биты как в nyble, bit, byte.Это просто запись целого числа в файл.Насколько я знаю, у вас не может быть 4-битного файла, поэтому наименьшим номиналом будет байт.

Вы, вероятно, не хотите отвечать за сериализацию, поэтому самым простым вариантом будет использование BinaryReader и BinaryWriter , а затем манипулировать битами внутри вашего C #.

Однако класс BinaryWriter использует как минимум 4-байтовое целое число.Например,

writer.Write( 1 ); // 01  
writer.Write( 10 ); // 0a  
writer.Write( 100 ); // 64  
writer.Write( 1000 ); // 3e8  
writer.Write( 10000 ); // 2710  
//writer.Write( 123456789 ); // 75BCD15

записывается в файл как

01 00 00 00 0a 00 00 00 64 00 00 00 e8 03 00 00 10 27 00 00 15 cd 5b 07
0 голосов
/ 15 января 2010

считывает в байт, а затем проверяет> = степени 2, чтобы получить каждый из битов в этом байте

...