Подтвердить что ты не робот

Создать новый файл с определенным размером

Мне нужно создавать файлы, содержащие случайные данные, но имеющие определенный размер. Я не могу найти эффективный способ сделать это.

В настоящее время я пытаюсь использовать BinaryWriter для записи пустого массива char в файл, но я получаю исключение из памяти при попытке создать массив с определенным размером

char[] charArray = new char[oFileInfo.FileSize];

using (BinaryWriter b = new BinaryWriter(File.Open(strCombined, FileMode.Create), System.Text.Encoding.Unicode))
{
    b.Write(charArray);
}

Предложения?

Спасибо.

4b9b3361

Ответ 1

Мне действительно нужно было это использовать:

http://msdn.microsoft.com/en-us/library/system.io.filestream.setlength.aspx

using (var fs = new FileStream(strCombined, FileMode.Create, FileAccess.Write, FileShare.None))
{
    fs.SetLength(oFileInfo.FileSize);
}

oFileInfo - это настраиваемый объект информации о файле файла, который я хочу создать. FileSize - его размер как int.

Спасибо.

Ответ 2

Это создаст файл размером 100 байт

System.IO.File.WriteAllBytes("file.txt", new byte[100]);

Как-то я пропустил часть данных о случайных данных. В зависимости от того, где находятся случайные данные, вы можете сделать что-то вроде следующего:

//bytes to be read
var bytes = 4020;

//Create a file stream from an existing file with your random data
//Change source to whatever your needs are. Size should be larger than bytes variable
using (var stream = new FileInfo("random-data-file.txt").OpenRead())
{
    //Read specified number of bytes into byte array
    byte[] ByteArray = new byte[bytes];
    stream.Read(ByteArray, 0, bytes);

    //write bytes to your output file
    File.WriteAllBytes("output-file.txt", ByteArray);
}

Ответ 3

выглядит так, как ваш FileSize очень большой. Работает ли он с меньшим размером файла?

если да, вы должны работать с буфером (char [] составляет всего 100 байт, и вы зацикливаетесь до достижения желаемого размера)