2011-12-07 25 views
12

Tôi cần tạo tệp có chứa dữ liệu ngẫu nhiên nhưng có kích thước cụ thể. Tôi không thể tìm ra một cách hiệu quả để làm điều này.Tạo tệp mới với kích thước cụ thể

Hiện nay tôi đang cố gắng sử dụng BinaryWriter để viết một mảng char rỗng vào một tập tin nhưng tôi nhận được một Out of Memory Exception khi cố gắng để tạo ra các mảng với kích thước cụ thể

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

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

Gợi ý?

Cảm ơn.

+0

oFileInfo là gì? – Hammerstein

+0

Nó phụ thuộc vào cách 'oFileInfo.FileSize' lớn; dù sao thì có vẻ tốt ... – Marco

+0

Việc bạn kích hoạt là gì? – Peter

Trả lời

22

Tôi thực sự cần thiết để sử dụng này:

http://msdn.microsoft.com/en-us/library/system.io.filestream.setlength.aspx

using (var fs = new FileStream(strCombined, FileMode.Create, FileAccess.Write, FileShare.None)) 
{ 
    fs.SetLength(oFileInfo.FileSize); 
} 

oFileInfo là một thông tin tập tin tùy chỉnh đối tượng của tệp mà tôi muốn tạo. FileSize có kích thước là int.

Cảm ơn.

0

có vẻ như FileSize của bạn rất lớn. Ứng dụng có hoạt động với kích thước tệp nhỏ hơn không?

nếu có bạn nên làm việc với một bộ đệm (char [] chỉ là khoảng 100 byte và bạn lặp cho đến khi đạt đến kích thước mong muốn)

6

này sẽ tạo một tập tin đó là 100 byte

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

Bằng cách nào đó tôi đã bỏ lỡ phần dữ liệu ngẫu nhiên cần thiết. Depnding về nơi dữ liệu ngẫu nhiên là hình thức sắp tới, bạn có thể làm một cái gì đó như sau:

//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); 
} 
Các vấn đề liên quan