myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » [done] SharpLibZip - Datei in Zip Datei editieren
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

[done] SharpLibZip - Datei in Zip Datei editieren

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
C4RL0
myCSharp.de-Mitglied

avatar-3444.png


Dabei seit: 01.06.2012
Beiträge: 70
Entwicklungsumgebung: VS 2015
Herkunft: Osnabrück


C4RL0 ist offline

[done] SharpLibZip - Datei in Zip Datei editieren

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

ich frage mich, ob es einen anderen Weg gibt, eine vorhandene Datei in einer Zip-Datei zu editieren ohne das Zip-Paket zwischen zu speichern.

Konkreter möchte ich eine Zahl in einer Textdatei ändern. Diese Textdatei ist neben anderen in einem Zip verpackt.

Oder läüft das nur über "Entpacken (und speichern) - Datei editieren - Packen (und löschen)"?

Für das Zip-Handling verwende ich derzeit SharpZipLib.

Danke für die Antworten.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von C4RL0 am 14.01.2019 07:29.

09.01.2019 11:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Taipi88 Taipi88 ist männlich
myCSharp.de-Mitglied

avatar-3220.jpg


Dabei seit: 02.02.2010
Beiträge: 980
Entwicklungsumgebung: VS 2010
Herkunft: Mainz


Taipi88 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

das sollte möglich sein, denn:
a) Es ist möglich eine (von vielen Dateien) aus dem Stream zu laden
(siehe  https://stackoverflow.com/questions/2971...ing-single-file)
b) Es ist möglich ein ZipFile zu updaten:
(siehe  https://github.com/icsharpcode/SharpZipLib/wiki/Updating)

Wäre nett wenn du über das Ergebnis berichtest.

LG
09.01.2019 12:05 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.190
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Du kannst keine Datei in einem Zip editieren. Die Datei musst Du einzeln raus ziehen.
Danach kannst die Datei isoliert überschreiben.
09.01.2019 12:11 Beiträge des Benutzers | zu Buddylist hinzufügen
C4RL0
myCSharp.de-Mitglied

avatar-3444.png


Dabei seit: 01.06.2012
Beiträge: 70
Entwicklungsumgebung: VS 2015
Herkunft: Osnabrück

Themenstarter Thema begonnen von C4RL0

C4RL0 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich hab von SharpLibZip auf DotNetZip umgesattelt, irgendwie gefiel mir die lib besser. Mit folgendem Code gelingt mir mein Vorhaben (ich weiß, bei gleichnamigen files wird derzeit nur das erste geändert)

C#-Code:
        /// <summary>
        /// Change Content of a single
        /// </summary>
        /// <param name="myPath">Path to dedicated zip file</param>
        /// <param name="myFile">File to be modified</param>
        public void modifyZippedFile(string myPath, string myFile)
        {
            string fileContent;
            string targetFile = "";
            using (ZipFile zip = ZipFile.Read(myPath))
            {
                foreach (ZipEntry entry in zip.Entries)
                    if (entry.FileName.Contains(myFile))
                        targetFile = entry.FileName;
                ZipEntry e = zip[targetFile];
                using (StreamReader sr = new StreamReader(e.OpenReader(), Encoding.Default, true))
                {
                    fileContent = sr.ReadToEnd();
                    fileContent = modifyContent(fileContent);
                    zip.RemoveEntry(targetFile);
                    zip.AddEntry(targetFile, fileContent);
                    zip.Save();
                }
            }
        }

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von C4RL0 am 11.01.2019 10:03.

11.01.2019 09:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 10 Monate.
Der letzte Beitrag ist älter als 10 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 22.11.2019 13:06