如何将'dummy-data'写入二进制文件?



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

  1. 创建新的二进制文件(特定文件夹)
  2. 清空/删除文件(如果已存在)
  3. 标记开始时间(毫秒精度)
  4. 尽可能快地将10 GB的伪数据写入文件。(将数据写入1024字节的伪数据块,继续写入,直到写入10 GB为止)
  5. 标记结束时间(毫秒精度)
  6. 刷新并关闭文件
  7. 输出写入所有10 GB数据所花费的时间(结束时间-开始时间)
  8. 每秒输出的字节数

可能的输入参数必须是:

  • 文件夹
  • 总字节数(例如10GB)
  • 每个区块的字节数(例如1024)

现在,我对仅仅获得一个能做到这一点的代码并不感兴趣,因为这不会教会我什么。我有兴趣学习如何做到这一点,理解它,这样我就可以自己做了。

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

有人能解释一下,或者把我重定向到某个地方吗?也许只是给我一个提示,它是如何做到的?我已经做C#大约2周了,但我从来没有写过任何创建文件等的东西。

创建新的二进制文件(特定文件夹)

刷新并关闭文件

C#为二进制输入/输出使用了一个名为的概念。

强制性文献:http://msdn.microsoft.com/en-us/library/k3352a4t(v=vs.110).aspx

这两种技术都在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();
}

看看System.IO.File。您想要创建一个文件流(静态File.Create),然后在using子句中,您将使用Stream.Write通过该流写入数据。我不打算添加更多,你可以在MSDN等上找到足够的信息。但如果需要,请随时提出任何问题。

此外,挑剔地说,Mark start-time (millisecond precision)将是相当棘手的,因为系统日期不能保证你的精度。所以你可以打印出毫秒,但它不会精确到一毫秒。有一个专门的类用于测量时间间隔,找到并使用它:)

查看以下内容即可开始:

  • System.IO.FileStream
  • System.IO.FileMode
  • System.Random
  • System.Diagnostics.Stopwatch
  • System.TimeSpan

最新更新