F# FSharp中zip存档的控制文件结构

F# FSharp中zip存档的控制文件结构,f#,zip,dotnetzip,F#,Zip,Dotnetzip,下面是一个代码示例,它获取文件名列表并将其压缩到单个归档中。我遇到的问题是,我希望filname所描述的文件位于zip归档文件的顶层(即,当归档文件打开时,您首先看到的是“clientName….xml”,而不是文件夹“xml”) let filename=sprintf“C:\\XML\\ClientName\u%s.XML”(System.DateTime.Now.ToString(“ddMMyyyy”)) 使用fs=newfilestream(文件名,FileMode.Create) 设x

下面是一个代码示例,它获取文件名列表并将其压缩到单个归档中。我遇到的问题是,我希望filname所描述的文件位于zip归档文件的顶层(即,当归档文件打开时,您首先看到的是“clientName….xml”,而不是文件夹“xml”)

let filename=sprintf“C:\\XML\\ClientName\u%s.XML”(System.DateTime.Now.ToString(“ddMMyyyy”))
使用fs=newfilestream(文件名,FileMode.Create)
设xmlSerializer=xmlSerializer(typeof)
serializer.Serialize(fs,logObj)
财政司司长(关闭)
使用zipfile=新zipfile()
让basePath=path.Replace(“/”,“\\”)
对于文件中的fileObj,请执行以下操作:
让relativeFilePath=basePath+(fileObj.Filename)。替换(“/”,“\\”)
printfn“%s”相对路径
zipfile.AddFile(relativeFilePath)|>忽略
()
zipfile.AddFile(文件名)|>忽略
让zipFileName=sprintf“C:\\XML\\Compliance\u%s.zip”(System.DateTime.Now.ToString(“ddMMyyyy”))
zipfile.Save(zipFileName)

ZipFile类型来自哪里?我不认为这是一个标准的.NET类。。。我尝试搜索并找到了这个库,它的类与您的示例相匹配:-)


提到的库还具有
AddFile
重载,该重载采用两个字符串—源文件名和ZIP文件中的相对文件名。这看起来和你要找的一模一样。我猜调用类似于
zipfile.AddFile(absolutePath,“/”)
..

zipfile类型来自哪里?我不认为这是一个标准的.NET类。。。我尝试搜索并找到了这个库,它的类与您的示例相匹配:-)

提到的库还具有
AddFile
重载,该重载采用两个字符串—源文件名和ZIP文件中的相对文件名。这看起来和你要找的一模一样。我猜调用类似于
zipfile.AddFile(absolutePath,“/”)

    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)