似乎无法使用 C# 正确压缩 xml 文件
Can't seem to zip up xml file correctly using C#
好的,所以我在网上尝试了很多示例,但我似乎无法正常工作。
我有以下创建 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);
谁能帮忙,干杯。
I get this:
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);
}
好的,所以我在网上尝试了很多示例,但我似乎无法正常工作。
我有以下创建 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);
谁能帮忙,干杯。
I get this:
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);
}