2010-02-11 141 views
0

我在文件夾中有一些文件。我想從該文件夾獲取文件,並將每個文件轉換爲二進制流的對象並存儲在一個集合中。並從集合中,我想檢索每個二進制流對象。如何使用c#與ASP.Net?從文件夾獲取文件

回答

2

如果您希望以存儲在一個MemoryStream,你可以嘗試

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)); 
    } 
} 

甚至使用一個字典,如果你想保留文件名作爲鍵

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

它可以簡單地爲這樣:

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)); 
} 

但總體而言,存儲FileStream就像這聽起來不像是一個好主意,不乞求麻煩。文件句柄在任何操作系統中都是有限的資源,所以修改它們並不是非常聰明。你可以根據需要訪問這些文件,而不是簡單地隨意打開文件。

所以基本上只存儲路徑和根據需要訪問文件可能是一個更好的選擇。

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

這可以通過使用DirectoryInfoFileInfo類來完成。下面是一些代碼,應該有希望做你需要什麼:

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(); 
    } 
}