以下例程来自Web API中的文件服务类。例程的目的是接收文件路径列表并将zip文件作为字节数组返回。 (调用此文件的例程将处理将文件传递给用户。)此例程使用ZipArchive
中的System.IO.Compression
类。
此例程生成的文件已损坏。返回值的大小始终为1024字节。
此代码几乎与我在MSDN和Stack Overflow上找到的示例相同。什么是不正确的?
public byte[] RetrieveMultipleFilesAsZip(IEnumerable<string> relativePaths)
{
using (var memoryStream = new MemoryStream())
{
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
foreach (var path in relativePaths)
{
try
{
// ActualPath(): Get the actual path where the file actually lives.
var actualPath = ActualPath(path);
var filename = Path.GetFileName(actualPath);
if (filename == null) continue;
var archiveEntry = archive.CreateEntry(filename);
using (var writer = new StreamWriter(archiveEntry.Open()))
{
// RetrieveFile(): A routine in this class that gets the contents of each file.
writer.Write(RetrieveFile(path));
}
}
catch (Exception ex)
{
// ignore this
}
}
}
memoryStream.Seek(0, SeekOrigin.Begin);
return memoryStream.GetBuffer();
}
}
答案 0 :(得分:0)
将XElement^ XMLHelper::QElement(String^ NodeName, String^ Nodevalue)
{
char NodeSetting[8] = "Setting";
更改为
XAttribute^ NewAttribute = gcnew XAttribute(gcnew XName(),Nodevalue));
XElement^ Built = gcnew XElement(NodeName, NewAttribute);
return Built;
}
StreamWriter
,并设置BinaryWriter
的{{1}}参数。