我需要创建包含随机数据但具有特定大小的文件。我无法找到一种有效的方法。
目前我正在尝试使用BinaryWriter将空char数组写入文件,但在尝试将数组创建为特定大小时出现Out of Memory Exception
char[] charArray = new char[oFileInfo.FileSize];
using (BinaryWriter b = new BinaryWriter(File.Open(strCombined, FileMode.Create), System.Text.Encoding.Unicode))
{
b.Write(charArray);
}
建议?
感谢。
答案 0 :(得分:28)
我实际上需要使用它:
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
。
感谢。
答案 1 :(得分:7)
这将创建一个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);
}
答案 2 :(得分:0)
看起来你的FileSize非常大。 它适用于较小的文件大小吗?
如果是,你应该使用缓冲区(char []只有大约100个字节,你循环直到达到所需的大小)