135

我需要测试一些与文件大小有关的负载问题。我有一个用 C# 编写的 Windows 应用程序,它将自动生成文件。我知道每个文件的大小,例如。100KB,以及要生成多少个文件。我需要帮助的是如何生成小于或等于所需文件大小的字符串。

伪代码:

long fileSizeInKB = (1024 * 100); //100KB
int numberOfFiles = 5;

for(var i = 0; i < numberOfFiles - 1; i++) {
     var dataSize = fileSizeInKB;
     var buffer = new byte[dataSize];
     using (var fs = new FileStream(File, FileMode.Create, FileAccess.Write)) {

     }
}
4

4 回答 4

422

您始终可以将 a 构造函数用于字符串,它需要 achar和您希望该字符重复的次数:

string myString = new string('*', 5000);

这为您提供了一串 5000 颗星 - 根据您的需要进行调整。

于 2011-02-17T17:27:21.543 回答
16

最简单的方法是以下代码:

var content = new string('A', fileSizeInKB);

现在你得到了一个包含尽可能多的 A 的字符串。

要使用 Lorem Ipsum 或其他一些重复字符串填充它,请构建类似于以下伪代码的内容:

string contentString = "Lorem Ipsum...";
for (int i = 0; i < fileSizeInKB / contentString.Length; i++)
  //write contentString to file

if (fileSizeInKB % contentString.Length > 0)
  // write remaining substring of contentString to file

编辑:如果您以 Unicode 保存,您可能需要将文件大小计数减半,因为如果我没记错的话,unicode 每个字符使用两个字节。

于 2011-02-17T17:26:34.283 回答
2

关于如何做到这一点有很多变化。一个是,用一堆字符填充文件。你需要100KB吗?没问题.. 100 * 1024 * 8 = 819200 位。单个字符是 16 位。819200 / 16 = 51200。您需要将 51,200 个字符粘贴到文件中。但考虑到文件可能有额外的标头/元数据,因此您可能需要考虑这一点并减少写入文件的字符数。

于 2011-02-17T17:13:46.823 回答
0

作为对您问题的部分回答,我最近创建了一个便携式 WPF 应用程序,可以轻松创建几乎任何大小的“垃圾”文件:https ://github.com/webmooch/FileCreator

于 2014-05-06T06:20:32.537 回答