2011-12-07 16 views
12

Potrzebuję utworzyć pliki, które zawierają losowe dane, ale mają określony rozmiar. Nie mogę wymyślić skutecznego sposobu na zrobienie tego.Utwórz nowy plik o określonym rozmiarze

Obecnie staram się korzystać z BinaryWriter pisać pusty char tablicę do pliku, ale ja Out of Memory wyjątek podczas próby utworzenia tablicy do określonego rozmiaru

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

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

sugestie?

Dzięki.

+0

Co to jest oFileInfo? – Hammerstein

+0

To zależy od tego, jak duża jest 'oFileInfo.FileSize'; w każdym razie wydaje się, że ... – Marco

+0

Jaki jest twój rozmiar pliku? – Peter

Odpowiedz

0

Wygląda na to, że twój FileSize jest bardzo duży. Czy działa z mniejszym rozmiarem pliku?

jeśli tak należy pracować z buforem (char [] jest tylko około 100 bajtów, a ci pętla aż osiągnął pożądanego rozmiaru)

6

Spowoduje to utworzenie pliku, który wynosi 100 bajtów

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

Jakoś przeoczyłem część dotyczącą potrzebnych danych losowych. Depnding na którym dane losowe nadchodzi formę, można zrobić coś jak poniżej:

//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); 
} 
Powiązane problemy