Ich habe einige ZIP-Archiv, gibt es viele Dateien/Ordner. Ich möchte einige von ihnen ändern/ihren Inhalt ersetzen.Modyfing eine der Dateien in Zip-Paket
Ich habe einige smaple Code auf einer Website gefunden: http://docs.telerik.com/devtools/silverlight/controls/radziplibrary/features/update-ziparchive.html
aber es funktioniert nicht, wird Datei nicht aktualisiert.
ZipArchiveEntry stencilEntry = archive.GetEntry(SBSX.StencilEntry.FullName);//entries.Where(c => c.Name == "stencil.xml").FirstOrDefault();
Stream stencilStream = stencilEntry.Open();//archive.GetEntry(SBSX.StencilEntry.FullName);// SBSX.StencilEntry.Open();
using (StreamReader ts = new StreamReader(stencilStream))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(ts.ReadToEnd());
if (xmlDoc.DocumentElement.Name == "Stencil")
{
stencilStream.Position = 0;
Stencil stencil = SupportXML.ReturnObjectFromXML<Stencil>(stencilStream);
if (SBSX.Display==DisplayType.IconAndName)
{
stencil.DefaultControlDisplayStyle = DisplayType.IconAndName.ToString();
}
else if (SBSX.Display==DisplayType.IconOnly)
{
stencil.DefaultControlDisplayStyle = DisplayType.IconOnly.ToString();
}
XmlSerializer serializer = new XmlSerializer(typeof(Stencil));
using (MemoryStream stream = new MemoryStream())
{
serializer.Serialize(stream, stencil);
stream.Seek(0, SeekOrigin.Begin);
var sr = new StreamReader(stream);
var myStr = sr.ReadToEnd();
stream.Seek(0, SeekOrigin.Begin);
stencilStream.Seek(0, SeekOrigin.End);
StreamWriter writer = new StreamWriter(stencilStream);
writer.Write(myStr);
}
}
Könnten Sie mir sagen, wie man es beheben? Oder ist die einzige Lösung, zuerst ZipArchiveEntry zu löschen und später ZipArchiveEntry hinzuzufügen?
Vielen Dank, ich habe hinzugefügt Spülen und es funktioniert jetzt. Mir war klar, dass es Text anhängt, nicht ersetzt, aber ich wollte nur testen, ob es hinzugefügt wird. – buks