NetworkStream och SharpZipLib

.NET

2 svar · 518 visningar · startad av renholm

Medlem sedan apr. 20012 266 inlägg
Trådstart#1

Hej

Vill hämta en zip-fil via FTP och extracta vissa filer från zip-filen. Har tänkt att använda SharpZipLib, finns det alternativ?. Tyvärr kan inte new ZipFile(Stream stream) ta en ström som inte inte är sökbar (CanSeek satt till true).

En lösning vore att skriva zip-filen till disk och sedan läsa den med en FileStream men känns rätt fånigt när de extractade filerna inte ens skall skrivas till disk. En bättre lösning vore då att skriva en egen Stream som vid Seek och Read läser från NetworkStream till någon form av buffer. Vad tror ni om den senare lösningen? Eller finns det redan något sätt att åstakomma detta på?

Medlem sedan maj 20012 812 inlägg
#2

Vet inte om MemoryStream är sökbar (har dock svårt att tro att den inte är det). Om jag förstod dig rätt så borde alltså du så fall ta networkstreamen och spara ner i en buffer sedan lägga denna buffer i memorystreamen (vet inte om du kan skriva direkt från networkstream till memorystream, kan du det är det att föredra). När du sedan har din zip-fil i memorystreamen så kör du new ZipFile(memorystream).

- M

Medlem sedan apr. 20012 266 inlägg
#3

Blev min lösning, tänkte först göra så att man aldrig läste mer än nödvändigt från NetworkStream. Men fick reda på en uppskattad filstorlek av filerna som skall hämtas och då är det inget problem att läsa in allt på engång i en MemoryStream.

259 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)