以下是一个代码示例,它采用文件名列表并将它们压缩到一个存档中。我遇到的问题是我希望filname描述的文件位于zip存档的顶层(即打开存档时,“clientName .... xml”是你看到的第一件事,而不是文件夹“XML”)。
let filename = sprintf "C:\\XML\\ClientName_%s.xml" (System.DateTime.Now.ToString("ddMMyyyy"))
use fs = new FileStream(filename, FileMode.Create)
let xmlSerializer = XmlSerializer(typeof<log>)
xmlSerializer.Serialize(fs,logObj)
fs.Close()
use zipfile = new ZipFile()
let basePath = path.Replace("/", "\\")
for fileObj in files do
let relativeFilePath = basePath + (fileObj.Filename).Replace("/", "\\")
printfn "%s" relativeFilePath
zipfile.AddFile(relativeFilePath) |> ignore
()
zipfile.AddFile(filename) |> ignore
let zipFileName = sprintf "C:\\XML\\Compliance_%s.zip" (System.DateTime.Now.ToString("ddMMyyyy"))
zipfile.Save(zipFileName)
答案 0 :(得分:4)
ZipFile
类型来自哪里?我不认为这是一个标准的.NET类...我尝试搜索并找到了这个库http://dotnetzip.codeplex.com/,它有一个与你的样本匹配的类: - )
提到的库也有AddFile
重载,它带有两个字符串 - 源文件名和ZIP文件中的相对文件名。这看起来与您正在寻找的完全一样。我猜这个电话会像zipfile.AddFile(absolutePath, "/")
......