2008-08-19 16 views
16

Tôi đang đọc tệp nhị phân vào chương trình phân tích cú pháp. Tôi sẽ cần lặp lại thông qua tệp và tìm kiếm các điểm đánh dấu nhất định để tôi có thể chia nhỏ tệp và chuyển các phần đó vào các nhà thầu của đối tượng tương ứng.Sự khác biệt giữa mảng byte và MemoryStream

Có lợi thế nào để giữ tệp dưới dạng luồng, MemoryStream hoặc FileStream hay nó nên được chuyển đổi thành mảng byte [] không?

Keith

Trả lời

24

A byte[] hoặc MemoryStream cả hai sẽ yêu cầu đưa toàn bộ tệp vào bộ nhớ. Một MemoryStream thực sự là một trình bao bọc xung quanh một mảng byte cơ bản. Cách tiếp cận tốt nhất là có hai FileStream (một cho đầu vào và một cho đầu ra). Đọc từ luồng đầu vào tìm kiếm mẫu được sử dụng để cho biết tệp nên được tách ra trong khi ghi vào tệp đầu ra hiện tại.

Bạn có thể muốn xem xét đóng gói các tệp đầu vào và đầu ra trong một lần lượt là BinaryReaderBinaryWriter nếu chúng thêm giá trị cho kịch bản của bạn.

7

MemoryStream về cơ bản là mảng byte có giao diện luồng, ví dụ: đọc/viết tuần tự và khái niệm về vị trí hiện tại.