Zastanawiam się, czy istnieje lepszy/wbudowany sposób, inny niż przy użyciu bufora bajtów i pętli, do odczytu z jednego strumienia i napisać go do inny (w .NET). Zwykle robi się to, aby zastosować transformację do strumienia i przenieść ją.Jaki jest najlepszy sposób, aby dane wyjściowe jednego strumienia wejściowego do innego
W tym przypadku, co mam ładowania pliku, umieszczając ją poprzez strumienia siadać i pisać go do pliku (Obsługa błędów usunięte dla uproszczenia):
byte[] buffer = new byte[10000000];
using (FileStream fsin = new FileStream(filename, FileMode.Open))
{
using (FileStream fsout = new FileStream(zipfilename, FileMode.CreateNew))
{
using (DeflateStream ds = new DeflateStream(fsout, CompressionMode.Compress))
{
int read = 0;
do
{
read = fsin.Read(buffer, 0, buffer.Length);
ds.Write(buffer, 0, read);
}
while (read > 0);
}
}
}
buffer = null;
Edit:
.NET 4.0 ma teraz funkcję Stream.CopyTo, Alleluja
Tak, chciałbym to zrobić jeśli byliśmy na 3,5. Zwykle umieszczamy go w statycznej bibliotece metod. –
Rzeczywiście, nazywał się StreamCopier.Copy przed 3.5 :-) –
Zauważ, że to dobrze, jeśli używasz .NET 2.0, o ile używasz C# 3. Wciąż możesz używać metod rozszerzeń z odrobiną oszustwa. Zobacz http://csharpindepth.com/Articles/Chapter1/Versions.aspx –