ZIP 아카이브가 있습니다. 파일/폴더가 많이 있습니다. 나는 그 중 일부를 수정하거나 내용을 대체하고 싶다.Zody 패키지 안에있는 파일 중 하나 Modyfing
내가 사이트에서 몇 가지 smaple 코드를 발견했습니다 http://docs.telerik.com/devtools/silverlight/controls/radziplibrary/features/update-ziparchive.html
을하지만이 작동하지 않는 파일이 업데이트되지 않습니다.
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);
}
}
당신은 해결 방법을 내게 조언을 수 있을까요? 또는 유일한 해결책은 먼저 ZipArchiveEntry를 삭제하고 나중에 새로운 ZipArchiveEntry를 추가하는 것입니다.
감사합니다. 플러싱을 추가했으며 현재 작동합니다. 나는 그것을 대체하지 않고 텍스트를 추가한다는 것을 알고 있었지만 추가 만 할 것인지 테스트하고 싶었습니다. – buks