2011-02-02 46 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

相關問題