如何生成一定长度的字符串以插入文件以满足文件大小标准?

Vaj*_*iaj 102 .net c# string operations

我需要测试一些与文件大小有关的负载问题.我有一个用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)) {

     }
}
Run Code Online (Sandbox Code Playgroud)

mar*_*c_s 298

你总是可以使用一个构造函数来获取字符串,这需要char你想要重复该字符的次数和次数:

string myString = new string('*', 5000);
Run Code Online (Sandbox Code Playgroud)

这会给你一串5000颗星 - 根据你的需要进行调整.

  • +1 Stack Overflow之前我们的祖先做了什么?如此简单,如此甜蜜. (74认同)
  • 堆栈溢出实际上是有史以来十大技术成就:-如果没有它,任何人都学会如何高效编码,我们永远都不会知道 (6认同)
  • 在那个古老的时代,我曾经在那儿,但我还不觉得自己像祖先:D找到这种珍珠的唯一方法是搜索您的代码和/或您团队的代码,并随着时间的推移积累好东西。现在我们可以与所有人分享珍珠:) (2认同)

小智 13

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

var content = new string('A', fileSizeInKB);
Run Code Online (Sandbox Code Playgroud)

现在你有了一个包含所需数量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
Run Code Online (Sandbox Code Playgroud)

编辑:如果你保存在Unicode中,你可能需要一半的文件大小,因为如果我没记错的话,unicode每个字符使用两个字节.

  • 如果你输出unicode,fileSizeInKB应该是fileSizeInBytes ..还是fileSizeInBytes/2? (4认同)

Kon*_*Kon 3

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