2011-02-02 37 views
1

以下是一个代码示例,它将文件名列表并将它们压缩到单个压缩文件中。我遇到的问题是,我希望filname所描述的文件位于zip压缩包的顶层(即当打开压缩包时,“clientName .... xml”是您首先看到的,而不是文件夹“XML”)。FSharp中的zip压缩文件的控制文件结构

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

ZipFile类型从何而来?我不认为这是一个标准的.NET类......我试图寻找,发现其中有一类匹配您的样品:-)

这个库http://dotnetzip.codeplex.com/所提到的库还具有AddFile重载接受两个字符串 - 源文件名和ZIP文件中的相对文件名。这看起来就像你要找的东西。我想这个电话会像zipfile.AddFile(absolutePath, "/") ...

+0

完美,谢谢! – Ramy 2011-02-03 02:02:18

相关问题