2010-06-04 6 views
2

Chaque fois que j'essaie d'obtenir le fichier, la longueur du flux d'entrée (s.Length) est toujours zéro, que fais-je tort? ZipEntry est valide et a la bonne taille du fichier, etc.sharpziplib + extraire un seul fichier

Voici le code im en utilisant:

public static byte[] GetFileFromZip(string zipPath, string fileName) 
{ 
    byte[] ret = null; 
    ZipFile zf = new ZipFile(zipPath); 
    ZipEntry ze = zf.GetEntry(fileName); 

    if (ze != null) 
    { 
     Stream s = zf.GetInputStream(ze); 
     ret = new byte[s.Length]; 
     s.Read(ret, 0, ret.Length); 
    } 

    return ret; 
} 

Répondre

9

Le flux d'entrée ne sera pas une longueur. Utilisez ZipEntry.Size à la place.

public static byte[] GetFileFromZip(string zipPath, string fileName) 
{ 
    byte[] ret = null; 
    ZipFile zf = new ZipFile(zipPath); 
    ZipEntry ze = zf.GetEntry(fileName); 

    if (ze != null) 
    { 
     Stream s = zf.GetInputStream(ze); 
     ret = new byte[ze.Size]; 
     s.Read(ret, 0, ret.Length); 
    } 

    return ret; 
} 
+0

Merci pour votre travail – schmoopy

Questions connexes