Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将大文件写入磁盘内存不足异常_C#_Out Of Memory_Large Files_Streamwriter - Fatal编程技术网

C# 将大文件写入磁盘内存不足异常

C# 将大文件写入磁盘内存不足异常,c#,out-of-memory,large-files,streamwriter,C#,Out Of Memory,Large Files,Streamwriter,我正在尝试写入然后读取一个大的随机文件来计算磁盘速度。我已经尝试了几种算法,但在尝试写入1GB文件时,总是会出现“出”或“内存”异常。这里有一些我试过的 方法1 byte[] data = new byte[8192]; Random rng = new Random(); using (FileStream stream = File.OpenWrite(filePath)) { for (int i = 0; i

我正在尝试写入然后读取一个大的随机文件来计算磁盘速度。我已经尝试了几种算法,但在尝试写入1GB文件时,总是会出现“出”或“内存”异常。这里有一些我试过的

方法1

   byte[] data = new byte[8192];
        Random rng = new Random();
        using (FileStream stream = File.OpenWrite(filePath))
        {
            for (int i = 0; i < fileSizeMb * 128; i++)
            {
                rng.NextBytes(data);
                stream.Write(data, 0, data.Length);
            }
        }
        byte[] data = new byte[8192];
        Random rng = new Random();
        using (FileStream stream = File.OpenWrite(filePath))
        {
            for (int i = 0; i < fileSizeMb * 128; i++)
            {
                rng.NextBytes(data);
                stream.Write(data, 0, data.Length);
                stream.Flush(); // BEETLE JUICE
            }
        }
方法1

   byte[] data = new byte[8192];
        Random rng = new Random();
        using (FileStream stream = File.OpenWrite(filePath))
        {
            for (int i = 0; i < fileSizeMb * 128; i++)
            {
                rng.NextBytes(data);
                stream.Write(data, 0, data.Length);
            }
        }
        byte[] data = new byte[8192];
        Random rng = new Random();
        using (FileStream stream = File.OpenWrite(filePath))
        {
            for (int i = 0; i < fileSizeMb * 128; i++)
            {
                rng.NextBytes(data);
                stream.Write(data, 0, data.Length);
                stream.Flush(); // BEETLE JUICE
            }
        }
byte[]data=新字节[8192];
随机rng=新随机();
使用(FileStream-stream=File.OpenWrite(filePath))
{
对于(int i=0;i
方法2

const int blockSize = 1024 * 8;
            const int blocksPerMb = (1024 * 1024) / blockSize;

            int count = fileSizeMb * blocksPerMb;

            byte[] data = new byte[blockSize];
            Random rng = new Random();
            //using (FileStream stream = File.OpenWrite(filePath))
            using (StreamWriter sw1 = new StreamWriter(filePath))
            {
                // There 
                for (int i = 0; i < count; i++)
                {
                    rng.NextBytes(data);
                    sw1.BaseStream.Write(data, 0, data.Length);
                    //stream.Write(data, 0, data.Length);

                }
            }
        const int blockSize = 1024 * 8;
        const int blocksPerMb = (1024 * 1024) / blockSize;

        int count = fileSizeMb * blocksPerMb;

        byte[] data = new byte[blockSize];
        Random rng = new Random();
        using (StreamWriter sw1 = new StreamWriter(filePath))
        {
            // There 
            for (int i = 0; i < count; i++)
            {
                rng.NextBytes(data);
                sw1.BaseStream.Write(data, 0, data.Length);
                sw1.baseStream.Flush(); // BEETLE JUICE
            }
        }
const int blockSize=1024*8;
常量int blocksPerMb=(1024*1024)/blockSize;
int count=fileSizeMb*blockspemb;
字节[]数据=新字节[块大小];
随机rng=新随机();
使用(StreamWriter sw1=新StreamWriter(文件路径))
{
//那里
for(int i=0;i
阅读


不要将整个文件读入内存,只需一次读取4096字节。位于

的示例代码您确定在阅读时没有从内存异常
中获取
吗?顺便说一句,
StreamReader/Writer
用于读取/写入文本数据,对于二进制数据,只需使用
Stream