2010-02-11 7 views
0

J'ai des fichiers dans un dossier. Je veux récupérer les fichiers de ce dossier et convertir chaque fichier en un objet de flux binaire et stocker dans une collection. Et à partir de la collection, je veux récupérer chaque objet de flux binaire. Comment est-il possible d'utiliser ASP.Net avec C#?Récupère les fichiers du dossier

Répondre

2

Si vous souhaitez l'avoir stocké dans un MemoryStream, vous pouvez essayer

List<MemoryStream> list = new List<MemoryStream>(); 
string[] fileNames = Directory.GetFiles("Path"); 
for (int iFile = 0; iFile < fileNames.Length; iFile++) 
{ 
    using (FileStream fs = new FileStream(fileNames[iFile], FileMode.Open)) 
    { 
     byte[] b = new byte[fs.Length]; 
     fs.Read(b, 0, (int)fs.Length); 
     list.Add(new MemoryStream(b)); 
    } 
} 

ou même utiliser un dictionnaire si vous souhaitez conserver la noms de fichiers en tant que clés

Dictionary<string, MemoryStream> files = new Dictionary<string, MemoryStream>(); 
string[] fileNames = Directory.GetFiles("Path"); 
for (int iFile = 0; iFile < fileNames.Length; iFile++) 
{ 
    using (FileStream fs = new FileStream(fileNames[iFile], FileMode.Open)) 
    { 
     byte[] b = new byte[fs.Length]; 
     fs.Read(b, 0, (int)fs.Length); 
     files.Add(Path.GetFileName(fileNames[iFile]), new MemoryStream(b)); 
    } 
} 
4

Il peut être aussi simple que cela:

using System; 
using System.Collections.Generic; 
using System.IO; 

List<FileStream> files = new List<FileStream>(); 
foreach (string file in Directory.GetFiles("yourPath")) 
{ 
    files.Add(new FileStream(file, FileMode.Open, FileAccess.ReadWrite)); 
} 

Mais dans l'ensemble, le stockage FileStream s comme cela ne semble pas une bonne idée et ne mendie des ennuis. Les handles de fichiers sont une ressource limitée dans n'importe quel système d'exploitation, donc ils ne sont pas très gentils. Il vaudrait mieux que vous accédiez aux fichiers au besoin plutôt que de simplement les garder ouverts à votre guise. Par conséquent, stocker uniquement les chemins et accéder aux fichiers selon les besoins peut être une meilleure option.

using System; 
using System.Collections.Generic; 
using System.IO; 

List<String> files = new List<String>(); 
foreach (string file in Directory.GetFiles("yourPath")) 
{ 
    files.Add(file); 
} 
0

Cela peut être fait en utilisant DirectoryInfo et FileInfo classes. Voici un code qui devrait, espérons-le faire ce dont vous avez besoin:

System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(@"C:\TempDir\"); 
if (dir.Exists) 
{ 
    foreach (System.IO.FileInfo fi in dir.GetFiles()) 
    { 
     System.IO.StreamReader sr = new System.IO.StreamReader(fi.OpenRead()); 
     // do what you will.... 
     sr.Close(); 
    } 
} 
Questions connexes