Ich habe ein Problem mit einer Zip-Datei ersetzen eine vorhandene Datei. Ich habe andere Beispiele hier angeschaut und ich kann es immer noch nicht herausfinden ... Ich habe eine loop
, die einige Statistiken der extrahierten Datei in ein Textfeld schreibt. Ich denke, dass seine diese Zeile:Entpacken nicht ersetzen Datei
if (!System.IO.File.Exists(fileUnzipFullName))
Mein Code:
public void UnzipFileNew()
{
richTextBox1.AppendText("\r\n" + "EXTRACTING!");
String rootpath = Environment.CurrentDirectory;
//This stores the path where the file should be unzipped to,
//including any subfolders that the file was originally in.
string fileUnzipFullPath;
//This is the full name of the destination file including
//the path
string fileUnzipFullName;
//Opens the zip file up to be read
using (ZipArchive archive = ZipFile.OpenRead(@"update.zip"))
{
//Loops through each file in the zip file
foreach (ZipArchiveEntry file in archive.Entries)
{
//Outputs file information to the Textbox
richTextBox1.AppendText("\r\n");
richTextBox1.AppendText("File Name: "+ file.Name);
richTextBox1.AppendText("\r\n");
richTextBox1.AppendText("File Size: bytes "+ file.Length);
richTextBox1.AppendText("\r\n");
richTextBox1.AppendText("Compression Ratio: "+ ((double)file.CompressedLength/file.Length).ToString("0.0%"));
richTextBox1.AppendText("\r\n");
//Identifies the destination file name and path
fileUnzipFullName = Path.Combine(rootpath, file.FullName); //fileUnzipFullName = Path.Combine(@"Example\", file.FullName);
//Extracts
if (!System.IO.File.Exists(fileUnzipFullName))
{
fileUnzipFullPath = Path.GetDirectoryName(fileUnzipFullName);
//Creates the directory if it doesn't exist
Directory.CreateDirectory(fileUnzipFullPath);
//Extracts the file to (potentially new) path
file.ExtractToFile(fileUnzipFullName);
}
}
}
}
Danke John! Das hat funktioniert! Ich habe der ZIP-Datei einen Ordner mit einer Datei hinzugefügt, um eine andere Datei in einem Ordner im Stammverzeichnis zu ersetzen. Ich habe einen Fehler: 'System.IO.DirectoryNotFoundException: 'Konnte einen Teil des Pfades' C: \ Users \ stump \ source \ repos \ UpdaterTest \ UpdaterTest \ bin \ Debug \ resources \ test \ 'nicht finden.' 'es wird in der gleichen' Datei geworfen.ExtractToFile (fileUnzipFullName, true); ' – javajoejuan
Oh, ich denke, Sie brauchen den tatsächlichen _Dateiname_. IIRC 'GetDirectoryName' liefert nur das Verzeichnis. Wenn Sie diese Zeile auskommentieren, sollte es funktionieren. – john
Nochmals vielen Dank für die Antwort! aber ich schien Fehler zu bekommen, wenn ich diese Zeile kommentierte. Ich habe auch die anderen Linien versucht, die mit 'GetDirectoryName' verbunden sind – javajoejuan