1

以下是一个代码示例,它采用文件名列表并将它们压缩到单个存档中。我遇到的问题是我希望 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)
4

1 回答 1

4

ZipFile类型从何而来?我不认为这是一个标准的 .NET 类...我尝试搜索并找到这个库http://dotnetzip.codeplex.com/它有一个与您的示例匹配的类:-)

提到的库也有AddFile重载,它需要两个字符串——源文件名和 ZIP 文件中的相对文件名。这似乎与您正在寻找的完全一样。我猜这个电话会像zipfile.AddFile(absolutePath, "/")......

于 2011-02-02T22:43:19.433 回答