Sya*_*hya 0 c# arrays file out-of-memory
我想创建一个具有加密强大的随机值序列的文件.这是代码
int bufferLength = 719585280;
byte[] random = new byte[bufferLength];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(random);
File.WriteAllBytes("crypto.bin",random);
Run Code Online (Sandbox Code Playgroud)
问题是它在rng.GetBytes(random);返回OutOfMemoryException.我需要一个具有这种大小的文件(不多也不少).我怎么解决这个问题?谢谢.
只需在块中执行:
byte[] buffer = new byte[16 * 1024];
int bytesToWrite = 719585280;
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
using (Stream output = File.Create("crypto.bin"))
{
while (bytesToWrite > 0)
{
rng.GetBytes(buffer);
int bytesThisTime = Math.Min(bytesToWrite, buffer.Length);
output.Write(buffer, 0, bytesThisTime);
bytesToWrite -= bytesThisTime;
}
}
Run Code Online (Sandbox Code Playgroud)
基本上没有理由一次性在内存中生成整个内容.