Tôi có danh sách tệp và tôi cần đọc từng tệp theo thứ tự cụ thể thành byte [] của một kích thước nhất định. Điều này trong chính nó không phải là một vấn đề cho một tập tin duy nhất, một đơn giản trong khi ((got = fs.Read (piece, 0, pieceLength))> 0) được công việc làm hoàn toàn tốt đẹp. Phần cuối cùng của tệp có thể nhỏ hơn mong muốn, điều đó là tốt.Có cách tích hợp để xử lý nhiều tệp dưới dạng một luồng không?
Bây giờ, có một chút phức tạp: Nếu tôi có nhiều tệp, tôi cần có một luồng liên tục, có nghĩa là nếu phần cuối cùng của tệp nhỏ hơn đoạn mảnh đó, thì tôi cần đọc (pieceLength-got) của tệp tiếp theo và sau đó tiếp tục cho đến khi kết thúc tệp cuối cùng. Vì vậy, về cơ bản, cho các tập tin X, tôi sẽ luôn luôn đọc miếng đó là chính xác mảnh dài, ngoại trừ phần cuối cùng của tập tin cuối cùng, có thể nhỏ hơn.
Tôi tự hỏi liệu đã có thứ gì đó được tích hợp trong .net (3.5 SP1) không. Cách tiếp cận hiện tại của tôi là tạo một Lớp có danh sách các tệp và sau đó hiển thị hàm Read(byte[] buffer, long index, long length)
, tương tự như FileStream.Read(). Điều này nên được khá thẳng về phía trước vì tôi không phải thay đổi mã gọi điện thoại của tôi mà đọc dữ liệu, nhưng trước khi tôi phát minh lại bánh xe tôi chỉ muốn kiểm tra lại rằng bánh xe chưa được xây dựng vào BCL.
Cảm ơn :)
Đó là thực sự khá một cách tốt, tôi chỉ không chắc chắn nhưng nếu tôi muốn triển khai luồng của riêng tôi. Thay vì một số điện thoại có thể đọc được là, một cũng có thể hoạt động, bởi vì sau đó, Kết hợp của tôi có toàn quyền kiểm soát "các luồng bên trong". Tôi sẽ nghĩ về cách tiếp cận nào phù hợp nhất với tôi. –