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

2023-12-03

我正在尝试写入然后读取一个大型随机文件来计算磁盘速度。我尝试了多种算法,但在尝试写入 1GB 文件时不断出现输出或内存异常。这是我尝试过的一些

Method 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);
            }
        }

Method 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);

                }
            }

Reading

   using (StreamReader sr = new StreamReader(filePath))
            {
                String line = sr.ReadToEnd();
            }

Method 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);
                stream.Flush(); // BEETLE JUICE
            }
        }

Method 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 (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
            }
        }

Reading

不要将整个文件读入内存,一次只读取 4096 字节。示例代码位于http://www.csharp-examples.net/filestream-read-file/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将大文件写入磁盘内存不足异常 的相关文章

  • C++:头文件中全局函数的多重定义错误

    该函数是全局的 在头文件中定义 暂时地我想把它留在那里 头文件还构成一个具有内联函数的特定类 其中一个函数调用this全局函数 源文件不包含任何有问题的全局函数 有关错误原因的任何提示吗 如果有人感兴趣的话我可以发布代码 mainwindo
  • Dapper 强类型查询返回默认对象值

    刚刚开始使用 Dapper 并喜欢它 我遇到了问题 它返回正确数量的对象 但它们的属性都有默认值 using var dbConnection Connection await dbConnection OpenAsync const st
  • 使用内部构造函数实例化类

    我有一个类 其构造函数被定义为内部 这意味着我无法实例化它 虽然这可能有道理 但出于调试和研究目的 我仍然愿意做一次 是否可以通过反射来做到这一点 我知道我可以访问私有 内部成员 但是我可以调用内部构造函数吗 或者 由于构造函数没有做任何重
  • 以编程方式 Godaddy 发送的电子邮件不在“已发送邮件”文件夹中 C#.net

    我正在通过以下方式发送电子邮件ASP NET代码使用godaddy邮件服务器 邮件发送成功 但未存储在已发送邮件文件夹中 我正在使用下面的代码 SmtpClient client new SmtpClient client Host smt
  • ProtoBuf-net AsReference 需要 Activator.CreateInstance 中的公共构造函数吗?

    在我的两门课程中 看起来像这样 最少 using System using System Collections Generic using System Collections using System ComponentModel us
  • C++:获取注册表值仅给出第一个字符[重复]

    这个问题在这里已经有答案了 我试图从注册表中获取字符串值 但我只得到第一个字母 HKEY hKey char gamePath MAX PATH if RegOpenKeyEx HKEY CURRENT USER L Software Bl
  • 使用 QSet 作为 Qt 地图容器中的键

    我需要一个映射 其中键是唯一的 并且每个键都是一组或自定义 POD 结构 其中包含 3 个数据项 这些值只是指向对象实例的指针 从阅读Qt 的 QMap 与 QHash 的文档 http qt project org doc qt 4 8
  • 禁用除滚动之外的 DataGridView

    我如何配置 datagridview 以便用户只能在行中移动并使用滚动 而没有其他 如果我禁用网格不允许我使用滚动 将您的 datagridview 设置为只读 这将禁用任何编辑 dataGridView1 ReadOnly true 在你
  • 将语句插入 SQL Server 数据库

    最近几天我试图找到这个错误 但没有成功 我正在尝试在数据库中插入一个新行 一切都很顺利 没有错误 也没有程序崩溃 My INSERT声明如下 INSERT INTO Polozaj Znesek Uporabnik Cas Kupec Po
  • 实体框架7审计日志

    我正在将一个旧项目移植到 ASP NET 5 和 Entity Framework 7 我使用数据库优先方法 DNX 脚手架 来创建模型 旧项目基于Entity Framework 4 审计跟踪是通过重写实现的SaveChanges的方法D
  • C++ 模板参数类型推断

    我有一个这样的C 模板 template
  • Type_traits *_v 变量模板实用程序顺序无法编译

    看过了这个答案 https stackoverflow com a 31763111 7151494 我试图想出一个变量模板从中获取代码的实用程序 template
  • 使用 Microsoft Graph 创建用户

    如何使用 Microsoft graph 创建用户 因为我在保存过程中遇到了权限失败的问题 我确实有几个问题 在图中调用创建用户 API 将在哪里创建用户 是在 Azure AD 还是其他地方 我尝试通过传递 json 和必需的标头来调用创
  • 如何使用 C# 代码使用超链接的 onClick 事件?

    我正在尝试为页面中的超链接添加条件 而不是仅仅使用特定的链接 例如 a href help Tutorial html Tutorial a 我想为不同的用户显示不同的页面 例如 如果用户以管理员身份登录 他们将看到与普通用户不同的链接 我
  • 如果数组为空,LINQ 返回 null

    public class Stuff public int x other stuff 我有一个IEnumerable
  • 使 C# 编译器相信执行将在成员返回后停止

    我认为目前这是不可能的 或者这是否是一个好主意 但这是我刚才正在考虑的事情 我使用 MSTest 对我的 C 项目进行单元测试 在我的一项测试中 我执行以下操作 MyClass instance try instance getValue
  • 检索 Autofac 容器以解析服务

    在 C WindowForms 应用程序中 我启动一个 OWIN WebApp 它创建另一个类 Erp 的单例实例 public partial class Engine Form const string url http 8080 49
  • 统一;随机物体移动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在制作一款机器人战斗游戏 我希望敌人随机移动 然后有时会向敌人移动 我希望运动包含在其中的代码 else if avoid fal
  • Visual Studio 2015默认附加库

    当我在 VS 2015 中创建一个空项目时 它会自动将这些库放入 附加依赖项 中 kernel32 lib user32 lib gdi32 lib winspool lib comdlg32 lib advapi32 lib shell3
  • XmlDocument Save 使文件保持打开状态

    我有一个简单的 C 函数 可以创建一个基本的 XML 文件并保存 private void CreateXMlFile string Filename string Name string Company XmlDocument doc n

随机推荐

  • 在远程 Linux 机器上编译 C++ - “检测到时钟偏差”警告

    我通过 PuTTY 和 WinSCP 连接到我大学的小型 Linux 集群 使用后者传输文件并使用前者编译和运行它们 到目前为止 我的工作是在大学实验室进行的 但今天我在家里做了一些工作 产生了一个有趣的警告 我上传了整个文件夹的内容 然后
  • 通用方法返回类型 - 编译错误[重复]

    这个问题在这里已经有答案了 鉴于此代码示例 class A public class TestGenerics private static
  • Chrome 在 HTTP 302 重定向时取消 CORS XHR

    看起来像根据CORS 规范 GET 和 POST 请求应透明地遵循 302 重定向 但 Chrome 正在取消我的请求 这是执行请求的 JS var r new XMLHttpRequest r open GET https dev mys
  • 带有空格的图像文件名

    我通过 php 扫描图像文件夹获取图像 URL 数组 某些图像文件名带有空格 空格后面的部分丢失了 例如 这个文件很好 http domain com folder blue sky png 这个文件会丢失sky png部分 http do
  • Django/Python 环境错误?

    当我尝试使用时出现错误syncdb python manage py syncdb 错误信息 File usr local lib python2 6 dist packages django conf init py line 83 in
  • 如何处理我不知道其类型的脚本?

    我的游戏使用各种不同的游戏模式 我想根据所选的游戏模式在场景开始时生成不同的 GameController 脚本 然后其他项目 例如 敌人 将引用主 GameController 无论是 GameController Mode1 GameC
  • Angular Material2 md-select 下拉列表出现在页面底部

    我目前正在 Angular 2 4 0 应用程序中使用 Angular Material2 使用 angular material 2 0 0 beta 1 由于某种原因 md select 下拉列表没有出现在初始值或占位符或箭头上来选择下
  • 无法解析的日期

    我有一个字符串日期 31 Dec 和模式 dd MMM 以及下一个代码 DateFormat formatter new SimpleDateFormat pattern formatter setTimeZone timeZone for
  • VBA 中的 LinEst 函数可以使用数组吗?

    基本上 我不是从单元格中选择一个范围 而是通过使用循环将值存储在数组中 我理想中想做的是将这些数组用作 LinEst 函数中已知的 x 和 y 这样做的目的并不重要 因为我想做的只是我已经编写的代码的一部分 然而 Do 循环 至少是第二个
  • 在 r 中,获取功率曲线中“a”和“b”值的输出值

    我对这个基本问题表示歉意 但无论出于何种原因 我确实陷入困境 我希望从 y a x b 的 a 和 b 功率曲线中获得输出值 假设我有这个数据集 x y log10 x log10 y 7 240 0 84509804 2 38021124
  • 为什么 NSUserDefaults 在我的应用程序和共享扩展程序之间不起作用?

    我有一个带有共享扩展的 iOS 应用程序 我正在尝试使用 NSUserDefaults 和应用程序组在它们之间共享数据 但是 虽然我可以写入 NSUD 对象 读取它 并且synchronize 没有错误 读取扩展名总是会导致nil 我有一个
  • PHP MySQL查询包含关键字/保留字[重复]

    这个问题在这里已经有答案了 我在更新 MySQL 数据 包括 HTML 数据 时遇到了问题 我不断修复错误 然而 一旦修正了一个错误 就会产生另一个错误 目前的错误如下 You have an error in your SQL synta
  • libipopt.so.1:无法打开共享对象文件

    执行基本安装后Ipopt 我能够编译他们提供的示例Ipopt 3 12 5 Ipopt examples hs071 cpp成功使用命令 g hs 071 main cpp hs071 nlp cpp I path to build inc
  • 从 F# 中的二叉搜索树中删除元素

    我正在尝试编写一种方法来从 BST 中删除元素 到目前为止 这就是我所拥有的 我不确定我是否走在正确的轨道上 或者是否有更好的方法通过使用模式匹配来匹配不同的删除情况 即 没有子项 1 个子项 2 个子项 type a bst NL Bin
  • PHP 中的 '(花式撇号?)是什么意思

    我得到了这个示例 PHP 代码 if new value old value 我该怎样称呼这个角色 它有什么作用 如何在键盘上输入它 以及 最重要的是 我可以使用什么来代替人类可读的位置 并且看起来不像我试图炫耀我对晦涩代码速记的知识 我在
  • 在Python中修改文本文件中的每一行

    我有一个大文件 如下例所示 1 10161 10166 3 1 10166 10172 2 1 10172 10182 1 1 10183 10192 1 1 10193 10199 1 1 10212 10248 1 1 10260 10
  • SecurityException:权限被拒绝 ACCESS_ALL_DOWNLOADS

    我正在尝试使用 DownloadManager 下载文件 是的 我知道人们已经遇到了这个错误 但我的似乎没有解决 我每次都尝试过 我已经声明了这个权限
  • 是否可以允许匿名用户仅浏览文件夹中的少数文件

    我想允许匿名用户仅浏览几个文件 例如 default aspx aboutus aspx contactus aspx 等 有没有办法将所有这些文件名写在一个地方 否则我将不得不一次又一次重复下面的代码对于所有文件
  • 高效测地线最近邻

    从纬度 经度数据 以弧度为单位 开始 我尝试有效地找到最近的 n 个邻居 最好是测地线 WGS 84 距离 现在我正在使用sklearn 球树使用半正矢距离 KD Tres 仅采用 minkowskian 距离 这很好而且快速 3 4 秒即
  • 将大文件写入磁盘内存不足异常

    我正在尝试写入然后读取一个大型随机文件来计算磁盘速度 我尝试了多种算法 但在尝试写入 1GB 文件时不断出现输出或内存异常 这是我尝试过的一些 Method 1 byte data new byte 8192 Random rng new