创建具有特定大小的新文件

时间:2011-12-07 13:53:52

标签: c# .net

我需要创建包含随机数据但具有特定大小的文件。我无法找到一种有效的方法。

目前我正在尝试使用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);
}

建议?

感谢。

3 个答案:

答案 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个字节,你循环直到达到所需的大小)