Nếu bạn sao chép bản sao, đọc bộ đệm, viết bộ đệm, đọc bộ đệm, ghi bộ đệm vv cho đến khi hết dữ liệu, bộ nhớ sẽ chỉ chiếm nhiều bộ nhớ. Tôi mong đợi File.Copy để làm điều này (trong mã Windows bản địa, phải thừa nhận).
Nếu bạn muốn làm điều đó cho mình, sử dụng một cái gì đó như thế này:
public void CopyData(Stream input, Stream output)
{
byte[] buffer = new byte[32 * 1024];
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, read);
}
}
này sẽ chỉ mất 32K tuy nhiên lớn dòng là.
EDIT: Như đã lưu ý trong các nhận xét, các luồng cũng có thể có bộ đệm riêng của chúng, nhưng điểm là bạn vẫn có thể chuyển một tệp rất lớn mà không hết bộ nhớ.
Nguồn
2009-02-26 19:08:30
Câu hỏi hay! :) – overslacked