geworfen Ich habe eine URL, die eine ZIP-Datei enthält. Die Dateien müssen aus der URL entpackt werden. Die URL wird mit webclient geöffnet und gelesen und dann zu einem Stream hinzugefügt. Es wird dann im ZipArchive-Objekt verwendet, das die Dateien entpackt und auf dem Laufwerk D: \ speichert. Wenn eine Datei etwa 400 MB groß ist, bekomme ich die 'System.OutOfMemoryException'.'System.OutOfMemoryException' wurde in ZipArchive für große Datei von URL
Stream muss verwendet werden, da der WebClient.OpenRead (Uri-Adresse) einen Stream zurückgibt. Sowie die Verwendung von ZipArchive (Stream-Stream).
Wie kann ich verhindern, diese Nachricht von zu bekommen?
string zipFileUrl = "https://www.dropbox.com/s/clersbjdcshpdy6/oversize_zip_test_0.zip?dl=0"
string output_path = @"D:\";
using (WebClient webClient = new WebClient())
{
using (Stream streamFile = webClient.OpenRead(zipFileUrl))
{
using (ZipArchive archive = new ZipArchive(streamFile))//ERROR HERE
{
var entries = archive.Entries;
//Loops thru each file in Zip and adds it to directory
foreach (var entry in entries)
{
if (entry.FullName != "/" && entry.Name != "")
{
string completeFileName = Path.Combine(output_path, entry.FullName);
string directory = Path.GetDirectoryName(completeFileName);
//If directory does not exist then we create it.
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}
//Extracts zip from URL to extract path, and overwrites if file exists.
entry.ExtractToFile(completeFileName, true);
}
}
}
}
Ich bin sehr überrascht, Sie erhalten den Fehler auf 'OpenRead', Öffnen des Streams zum Lesen sollte nicht so viel Speicher aufnehmen. –
Was ist der StackTrace? –
Kein Fehler wie dieser an meinem Ende, obwohl ich 'End of Central Directory Datensatz konnte nicht gefunden werden 'in der nächsten Zeile. – DavidG