Leggere i nomi dei file di uno .ZIP in F#

Per leggere il contenuto di un file .ZIP e visualizzare l’elenco dei nomi dei file, potete utilizzare questo codice F#:

open ICSharpCode.SharpZipLib.Zip

open System.IO

 

let readAllBytes(br:Stream) =

    let len = 2048           

    let data = Array.zeroCreate len

    use ms = new MemoryStream()

    use bw = new BinaryWriter(ms)

    let mutable is_done = false

    while(not is_done) do

        let sz = br.Read(data, 0, len)

        is_done <- (sz <= 0)

        if (sz > 0) then

            bw.Write(data, 0, sz)

    ms.ToArray()            

   

type FileEntry = {filename: string; contents: byte[]}

type ZipEntry = File of FileEntry

                | Dir of string

 

let fromZip (fileName: string): seq<ZipEntry> =

    seq{

        use s = new ZipInputStream(File.OpenRead(fileName))

        let e = ref (s.GetNextEntry())

        while (!e <> null) do

            if (!e).IsFile then

                yield File {filename = (!e).Name;

                            contents = readAllBytes s}

            else if (!e).IsDirectory then

                yield (Dir (!e).Name)

            e := s.GetNextEntry()}

 

let example () =

    //dump names of all files in zip archive

    fromZip @”test.zip”

    |> Seq.choose (function (File f) -> Some f.filename

                            | _ -> None)

    |> Seq.iter (printfn “%A”)

 

(Fonte: http://www.codeproject.com/Tips/125781/Reading-Zip-files-in-F)

Pubblicato il 19 settembre 2016 su Novità. Aggiungi ai preferiti il collegamento . Lascia un commento.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: