Создать новый файл с определенным размером
Мне нужно создавать файлы, содержащие случайные данные, но имеющие определенный размер. Я не могу найти эффективный способ сделать это.
В настоящее время я пытаюсь использовать 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);
}
Предложения?
Спасибо.
Ответы
Ответ 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 байт, и вы зацикливаетесь до достижения желаемого размера)