Рейтинг:
0
Dave Kreskowiak
Вы можете отказаться от большого количества этого кода просто используя BitArray для выполнения преобразования:
bool[] array = new bool[8];
array[1] = true;
array[3] = true;
array[6] = true;
array[7] = true;
BitArray bytes = new BitArray(array);
byte[] byteArray = new byte[1];
bytes.CopyTo(byteArray, 0);
// byteArray[0] now has the value 0xCA
Затем вы можете записать массив байтов в файл, хотя это не будет текст, поэтому я не знаю, почему вы пытаетесь использовать текстовый файл.
Вы даже можете просто пропустить типа bool[] массив, и просто использовать типа bitarray, чтобы вместить все значения типа bool.
BitArray bits = new BitArray(8); // Holds 8 bits
bits[1] = true;
bits[3] = true;
bits[6] = true;
bits[7] = true;
byte[] byteArray = new byte[1];
bits.CopyTo(byteArray, 0);
computerpublic
//Ошибки компилятора не происходит, но это дает мне большой пустой выходной файл, который продолжает строиться
//Также программа не заканчивается.
использование системы;
использование системы.ИО;
использование системы.Коллекции;
приложение пространства имен
{
программа статического класса
{
static void Main(string[] args)
{
боол срок действия = правда;
bool[] array = новый bool[8];
BitArray bytes = новый BitArray(массив);
const int BufferSize = 1024;
byte[] buffer = новый байт[BufferSize];
FileInfo ap = новый FileInfo("tempii.txt");
строку путь к файлу = АП.Полное имя;
строка destinationPath = путь.Объединить("C:\\check", Путь.GetFileName(путь_к_файлу));
using (Stream output = File.OpenWrite(destinationPath))
{
int amount = 1;
в то время как (сумма > 0)
{
for (int i = 0; i < 8; i++)
{
if (tif == true)
{
срок действия = ложь;
}
else if (tif == false)
{
срок действия = правда;
}
массив[i] = tif;
}
байты.CopyTo(buffer, 0);//ошибки компилятора не происходит, но это дает мне большой пустой выходной файл, который продолжает расти.
выход.Write(buffer, 0, amount);//также программа не заканчивается.
}
}
}
}
}
Dave Kreskowiak
МММ...вам не нужен весь блок "while" в вашем коде. Буфер, который вы создали, содержит все данные, которые должны быть записаны в файл, и вы можете сделать это с помощью одной строки кода внутри вашего блока "using".
using (Stream output = File.OpenWrite(destinationPath))
{
output.Write(buffer, 0, buffer.Count);
}
Конечно, две строки кода, которые вы помещаете внизу, должны быть перемещены выше записи в файл, чтобы он имел какой-либо смысл.
Серьезно, научитесь пользоваться отладчиком! Это поможет вам понять, что делает код!