2011-11-21 39 views
30

Trong giải pháp của tôi, thư mục có một vài tệp. Tất cả các tệp này đều có "Tài nguyên được nhúng" của Build Action.Liệt kê tất cả các tài nguyên được nhúng trong một thư mục

Với mã này, tôi có thể nhận được một tập tin:

assembly.GetManifestResourceStream(assembly.GetName().Name + ".Folder.File.txt"); 

Nhưng có cách nào để có được tất cả *.txt tập tin trong thư mục này? Một danh sách các tên hoặc một phương thức để lặp qua tất cả chúng?

Trả lời

60

Bạn có thể kiểm tra

assembly.GetManifestResourceNames() 

mà trả về một mảng các chuỗi của tất cả các nguồn lực kiềm chế. Sau đó, bạn có thể lọc danh sách đó để tìm tất cả các tệp *.txt được lưu trữ dưới dạng tài nguyên được nhúng của mình.

Xem MSDN docs for GetManifestResourceNames để biết chi tiết.

1

hãy thử với điều này. ở đây bạn nhận được tất cả các tệp

string[] embeddedResources = Assembly.GetAssembly(typeof(T)).GetManifestResourceNames(); 

T tất nhiên là loại của bạn. vì vậy bạn có thể sử dụng nó generic

-3

Chỉ nứt này, sử dụng:

Assembly _assembly; 
_assembly = Assembly.GetExecutingAssembly(); 
List<string> filenames = new List<string>(); 
filenames = _assembly.GetManifestResourceNames().ToList<string>(); 
List<string> txtFiles = new List<string>(); 
for (int i = 0; i < filenames.Count(); i++) 
{ 
    string[] items = filenames.ToArray(); 
    if (items[i].ToString().EndsWith(".txt")) 
    { 
     txtFiles.Add(items[i].ToString()); 
    } 
} 
+3

Re "Chỉ cần bẻ khóa này". Điều đó mất 18 tháng ?! :) –

+3

tên tệp đầu tiên = ToList() và sau đó cho mỗi tên tệp = filenames.ToArray() ??? và sau đó string.ToString() ??? bạn đang đùa tôi à – sasjaq

9

Hãy thử điều này, trả về một mảng với tất cả .txt tập tin bên trong thư mục thư mục.

private string[] GetAllTxt() 
{ 
    var executingAssembly = Assembly.GetExecutingAssembly(); 
    string folderName = string.Format("{0}.Resources.Folder", executingAssembly.GetName().Name); 
    return executingAssembly 
     .GetManifestResourceNames() 
     .Where(r => r.StartsWith(folderName) && r.EndsWith(".txt")) 
     //.Select(r => r.Substring(constantResName.Length + 1)) 
     .ToArray(); 
} 

LƯU Ý: Bỏ ghi chú //.Select(... để lấy tên tệp.

Các vấn đề liên quan