metodos ejemplos c# string .net operations

c# - ejemplos - ¿Cómo generar cadenas de cierta longitud para insertarlas en un archivo y cumplir con los criterios de tamaño de archivo?



string[] c# (4)

Como respuesta parcial a su pregunta, recientemente creé una aplicación WPF portátil que crea fácilmente archivos "basura" de casi cualquier tamaño: https://github.com/webmooch/FileCreator

Tengo un requisito para probar algunos problemas de carga con respecto al tamaño del archivo. Tengo una aplicación de Windows escrita en C # que generará automáticamente los archivos. Sé el tamaño de cada archivo, ej. 100 KB, y cuántos archivos generar. Lo que necesito ayuda es cómo generar una cadena inferior o igual al tamaño de archivo requerido.

pseudo código:

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)) { } }


Hay tantas variaciones sobre cómo puedes hacer esto. Una sería, llena el archivo con un montón de caracteres. Necesitas 100KB? No hay problema. 100 * 1024 * 8 = 819200 bits. Una sola char es de 16 bits. 819200/16 = 51200. Debe pegar 51.200 caracteres en un archivo. Pero considere que un archivo puede tener encabezado / metadatos adicionales, por lo que es posible que deba contabilizar eso y disminuir el número de caracteres para escribir en el archivo.


La forma más fácil sería seguir el código:

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

Ahora tienes una cadena con tantas A como se requiera.

Para rellenarlo con Lorem Ipsum o alguna otra cadena repetitiva construya algo así como el siguiente pseudocódigo:

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

Editar: si está guardando en Unicode, puede que necesite la mitad del conteo del tamaño del archivo porque Unicode usa dos bytes por carácter si no recuerdo mal.


Siempre puede usar un constructor para la cadena que toma un char y la cantidad de veces que desea repetir dicho carácter:

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

Esto te da una cadena de 5000 estrellas, ajusta tus necesidades.