J'ai l'obligation de tester certains problèmes de charge en ce qui concerne la taille du fichier. J'ai une application Windows écrite en C # qui générera automatiquement les fichiers. Je connais la taille de chaque fichier, ex. 100 Ko, et combien de fichiers à générer. Ce dont j'ai besoin d'aide, c'est comment générer une chaîne inférieure ou égale à la taille de fichier requise.
pseudo code:
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)) {
}
}
Vous pouvez toujours utiliser le constructeur a pour une chaîne qui prend une char
et un nombre de fois où vous voulez que ce caractère soit répété:
string myString = new string('*', 5000);
Cela vous donne une chaîne de 5000 étoiles - Tweak à vos besoins.
Le moyen le plus simple serait le code suivant:
var content = new string('A', fileSizeInKB);
Maintenant, vous avez une chaîne avec autant de A que nécessaire.
Pour le remplir avec Lorem Ipsum ou une autre chaîne répétée, construisez quelque chose comme le pseudocode suivant:
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
Edition: Si vous enregistrez en Unicode, vous devrez peut-être réduire de moitié le nombre de fichiers, car Unicode utilise deux octets par caractère, si je me souviens bien.
Il y a tellement de variations sur la façon de procéder. On pourrait être, remplissez le fichier avec un tas de caractères. Vous avez besoin de 100 Ko? Pas de problème .. 100 * 1024 * 8 = 819200 bits. Un seul caractère est 16 bits. 819200/16 = 51200. Vous devez coller 51 200 caractères dans un fichier. Mais considérez qu'un fichier peut avoir des en-têtes/métadonnées supplémentaires, vous devrez peut-être en tenir compte et réduire le nombre de caractères à écrire dans le fichier.
En réponse partielle à votre question, j'ai récemment créé une application portable WPF qui crée facilement des fichiers «indésirables» de presque toutes les tailles: https://github.com/webmooch/FileCreator