似乎无法使用C#正确压缩xml文件

时间:2018-01-18 00:07:20

标签: c# xml compression nopcommerce

好的,所以我在网上尝试过很多例子,但我似乎无法正常工作。

我有以下代码创建一个zip存档,当我解压缩zip存档时,有一个xml文件。

string filePathZip = Path.Combine(HttpRuntime.AppDomainAppPath, "content\\files\\exportimport",
                prependStoreId + "ebayproductinventorysyncfeed.zip");

                using (FileStream zipToOpen = new FileStream(filePathZip, (!File.Exists(filePathZip)) ? FileMode.CreateNew : FileMode.Open))
                {
                    using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
                    {
                        //byte[] bytes = File.ReadAllBytes(oldFilePath);
                        ZipArchiveEntry readmeEntry = archive.CreateEntry(oldFilePath);
                        using (StreamWriter writer = new StreamWriter(readmeEntry.Open()))
                        {
                            writer.Write(oldFilePath);
                            Debug.WriteLine("Information about this package.");
                            Debug.WriteLine("========================");
                        }
                    }
                }

现在的问题是,如果我打开该xml文件,原始xml文件中的数据就不存在了。所以不要看到这样的事情:

<?xml version="1.0" encoding="utf-8"?>
<ReviseInventoryStatusRequest xmlns="urn:ebay:apis:eBLBaseComponents">
  <RequesterCredentials>
    <eBayAuthToken></eBayAuthToken>
  </RequesterCredentials>
  <Version>967</Version>
  <ErrorLanguage>en_US</ErrorLanguage>
  <WarningLevel>High</WarningLevel>
</ReviseInventoryStatusRequest>

我明白了:

C:\projects\website\Presentation\Nop.Web\content\files\exportimport\ebaylmsinventoryfeed.xml

我认为将文件作为流打开是有意义的,因为我对C#还不熟悉,所以无法弄明白。

我也尝试过:

writer.Write(bytes);

任何人都可以帮助,欢呼。

1 个答案:

答案 0 :(得分:2)

  

我明白了:

     

C:\projects\website\Presentation\Nop.Web\content\files\exportimport\ebaylmsinventoryfeed.xml

这就是你告诉它的事情:

writer.Write(oldFilePath);

也许相反:

using (var dest = readmeEntry.Open()))
using (var source = File.OpenRead(oldFilePath))
{
    source.CopyTo(dest);
}