我有一個文件列表,我需要按給定大小的byte []按特定順序讀取它們。這對於單個文件本身並不是問題,簡單的而((got = fs.Read(piece,0,pieceLength))> 0)完成工作完全正常。該文件的最後一部分可能比預期的要小,這很好。是否有內置的方式來處理多個文件作爲一個流?
現在有一個棘手的問題:如果我有多個文件,我需要一個連續的流,這意味着如果一個文件的最後一部分小於那個pieceLength,那麼我需要閱讀(pieceLength-got )下一個文件,然後繼續下去,直到最後一個文件結束。
所以,基本上,給定X文件,我會一直閱讀完全是pieceLength長的作品,除了最後一個最後一個文件,可能會更小。
我只是想知道是否已經有內置的.net(3.5 SP1)內置的東西。我目前的做法是創建一個類,它接受一個文件列表,然後公開一個類似於FileStream.Read()的函數Read(byte[] buffer, long index, long length)
函數。這應該是非常直接的,因爲我不必更改讀取數據的調用代碼,但在重新開始之前,我只想仔細檢查車輪是否已經內置到BCL中。
謝謝:)
這實際上是一個相當不錯的辦法,我只是還沒有確定,如果我想實現我自己的流。相反,一個IEnumerable,一也可以工作,因爲那時我CombinationStream擁有「內部流」完全控制。我會考慮哪種方法最適合我。 –
2009-02-10 21:42:40