2011-12-07 50 views
12

Necesito crear archivos que contengan datos aleatorios pero que sean de un tamaño específico. No puedo encontrar una manera eficiente de hacer esto.Crear nuevo archivo con tamaño específico

Actualmente estoy tratando de utilizar el BinaryWriter para escribir una matriz de caracteres vacía a un archivo, pero me sale un excepción de memoria insuficiente cuando se trata de crear la matriz para el tamaño específico

char[] charArray = new char[oFileInfo.FileSize]; 

using (BinaryWriter b = new BinaryWriter(File.Open(strCombined, FileMode.Create), System.Text.Encoding.Unicode)) 
{ 
    b.Write(charArray); 
} 

Sugerencias?

Gracias.

+0

¿Qué es oFileInfo? – Hammerstein

+0

Depende de cómo es grande 'oFileInfo.FileSize'; de todos modos, parece bueno ... – Marco

+0

¿Cuál es su tamaño de archivo? – Peter

Respuesta

0

parece que su FileSize es muy grande. ¿Funciona con un tamaño de archivo más pequeño?

si es así se debe trabajar con una memoria intermedia (char [] es sólo alrededor de 100 bytes y se recorre hasta alcanzar el tamaño deseado)

6

Esto creará un archivo que es de 100 bytes

System.IO.File.WriteAllBytes("file.txt", new byte[100]); 

De alguna manera me perdí la parte sobre los datos aleatorios necesarios. Depnding en donde los datos al azar está llegando forma, se podría hacer algo como lo siguiente:

//bytes to be read 
var bytes = 4020; 

//Create a file stream from an existing file with your random data 
//Change source to whatever your needs are. Size should be larger than bytes variable 
using (var stream = new FileInfo("random-data-file.txt").OpenRead()) 
{ 
    //Read specified number of bytes into byte array 
    byte[] ByteArray = new byte[bytes]; 
    stream.Read(ByteArray, 0, bytes); 

    //write bytes to your output file 
    File.WriteAllBytes("output-file.txt", ByteArray); 
} 
Cuestiones relacionadas