如何生成一定长度的string插入文件以符合文件大小标准?
我有要求testing一些关于文件大小的负载问题。 我有一个用C#编写的Windows应用程序,它将自动生成文件。 我知道每个文件的大小,例如。 100KB,以及要生成多less个文件。 我需要帮助的是如何生成一个小于或等于所需的文件大小的string。
伪代码:
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)) { } }
你总是可以使用一个string的构造函数,该string需要一个char
并且需要重复多次:
string myString = new string('*', 5000);
这给你一串5000颗星 – 调整你的需求。
最简单的方法是以下代码:
var content = new string('A', fileSizeInKB);
现在你已经有了一个string与所需的A。
用Lorem Ipsum或者其他一些重复的string填充它就像下面的伪代码一样:
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每个字符使用两个字节。
如何做到这一点,有太多的变化。 一个是,用一堆字符填充文件。 你需要100KB? 没问题。100 * 1024 * 8 = 819200位。 一个字符是16位。 819200/16 = 51200.您需要将51,200个字符粘贴到一个文件中。 但考虑一个文件可能有额外的头/元数据,所以你可能需要考虑到这一点,并减less要写入文件的字符数。
作为您的问题的一个部分回答,我最近创build了一个可移植的WPF应用程序,可以轻松创build几乎任何大小的“垃圾”文件: https : //github.com/webmooch/FileCreator