Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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#_Binary_Flush - Fatal编程技术网

C# 我怎么写';虚拟数据';转换成二进制文件?

C# 我怎么写';虚拟数据';转换成二进制文件?,c#,binary,flush,C#,Binary,Flush,我在实习期间得到了一份任务,基本上是这样的(一切都是用C#在Visual Studio 2013中制作的): 创建新的二进制文件(特定文件夹) 清空/删除文件(如果已存在) 标记开始时间(毫秒精度) 尽可能快地将10 GB的虚拟数据写入文件。 (将数据写入1024字节的伪数据块,直到写入10 GB) 标记结束时间(毫秒精度) 刷新并关闭文件 输出写入所有10 GB数据所需的时间(结束时间-开始时间) 每秒输出的字节数 可能的输入参数必须为: 文件夹 总字节数(例如10GB) 每个块的字节数(例

我在实习期间得到了一份任务,基本上是这样的(一切都是用C#在Visual Studio 2013中制作的):

  • 创建新的二进制文件(特定文件夹)
  • 清空/删除文件(如果已存在)
  • 标记开始时间(毫秒精度)
  • 尽可能快地将10 GB的虚拟数据写入文件。 (将数据写入1024字节的伪数据块,直到写入10 GB)
  • 标记结束时间(毫秒精度)
  • 刷新并关闭文件
  • 输出写入所有10 GB数据所需的时间(结束时间-开始时间)
  • 每秒输出的字节数
  • 可能的输入参数必须为:

    • 文件夹
    • 总字节数(例如10GB)
    • 每个块的字节数(例如1024)
    现在我真的不感兴趣的只是得到一个代码来做这件事,因为这并没有教会我什么。我有兴趣学习如何做到这一点,理解它,这样我就可以自己做

    还请注意,我知道这不是一个可以访问的网站,只是为了让别人给你做作业——但我也知道我对学习这个很感兴趣,我不知道其他地方(除了我的导师,但我不想每隔20分钟来问他一些事情:p)

    谁能给我解释一下,或者把我引向别处?也许只是给我一个提示,它是怎么做的?
    我已经做了2个星期的C,但是我从来没有写过任何创建文件的东西。

    看看
    System.IO.File
    。您希望创建一个文件流(静态
    文件.create
    ),然后在
    using
    子句中,您将使用
    stream.write通过该流写入数据。我不打算补充更多,你可以找到足够的MSDN等信息,但如果需要,请随时提问


    另外,为了挑剔,
    标记开始时间(毫秒精度)
    将是相当棘手的,因为系统日期不能保证这种精度。所以你可以打印出毫秒,但它不会精确到一毫秒。有一个专门用于测量时间间隔的类,找到它并使用它:)

    查看以下内容以开始学习:

    • System.IO.FileStream
    • System.IO.FileMode
    • 系统。随机
    • 系统诊断。秒表
    • System.TimeSpan
    创建新的二进制文件(特定文件夹)

    刷新并关闭文件

    C#使用一种称为流的概念来进行二进制输入/输出

    强制性文献:

    这两种技术都在MSDN上进行了演示

    清空/删除文件(如果已存在)

    实际上,如果您不想覆盖某个文件,只需检查该文件是否存在

    标记开始时间(毫秒精度)

    标记结束时间(毫秒精度)

    输出写入所有10 GB数据所需的时间(结束时间-开始时间)

    每秒输出的字节数

    查看
    System.Diagnostics
    名称空间

    尽可能快地将10 GB的虚拟数据写入文件。(写入数据) 作为1024字节的虚拟数据块,继续,直到10 GB的数据已被删除 (书面)

    最后,节目的重点是


    剧透警报


    您必须编写一个循环,在每次迭代中写入1024字节,直到写入的字节总数达到10GB

    下面是一个代码示例,但没有错误检查(因为这不是一个要求)。在现实世界中,您显然也会编写处理异常的代码

    using (var fileStream = File.OpenWrite(path))
    {
        double fileSize = Math.Pow(10, 10); // 10 GB
        int bufferSize = 1024; // 1KB
        byte[] buffer = new byte[bufferSize]; // Create an array of zero's
    
        for (int written = 0; written < fileSize; written += bufferSize)
        {
            // Write 1024 bytes (all zero's: 000000000000...0)
            fileStream.Write(
                array: buffer,
                offset: 0,
                count: bufferSize);
        }
        /* Optional inside a "using" block: */ fileStream.Flush();
    }
    
    使用(var fileStream=File.OpenWrite(path))
    {
    double fileSize=Math.Pow(10,10);//10GB
    int bufferSize=1024;//1KB
    byte[]buffer=new byte[bufferSize];//创建一个零的数组
    for(int writed=0;writed
    您在作业的哪一部分遇到问题?创建文件?写入文件?生成虚拟数据?获取当前时间?那么,当前时间的哪一部分导致了问题?您已经将项目分为8个任务-您完成这些任务的程度如何?您是否尝试过只设置文件的大小/长度?我建议您开始,尽可能深入,然后就您遇到的问题提出具体问题。请,向我们展示一些代码,并解释您遇到困难的部分。您可能需要查看System.IO.FileStream、System.random,谢谢。我以前从未使用过File.Create、“using”或“Stream.Write”,所以这就是为什么我不知道如何处理这个任务的原因。我会去做一些研究。OP明确地不想要一个完整的解决方案:PI知道。我就是忍不住。公平地说,我确实添加了一个扰流警报。:)哦,不要在for循环的每次迭代中都刷新。您应该只在需要时显式刷新,否则您将尝试对.NET和操作系统进行各种优化。对于写入之间没有“暂停”的顺序写入,这只会使性能变得更差(平均来说有一点,但在某些情况下,例如向ehm写入软盘驱动器或网络共享,这可能非常重要)。只在最后需要刷新,但无论如何,
    Dispose
    会处理这个问题,因此即使在那时也不需要刷新。如果你没有忘记
    Dispose
    …我在这里查看了你的帖子,并重新创建了它。同样的函数,其他变量等等,但至少我知道它现在是如何工作的。问题是它并没有。即使通过复制/粘贴代码,我也会出错