2011-11-21 13 views
30

私の解決策では、いくつかのファイルがあるフォルダがありました。これらのファイルには、ビルドアクションの「組み込みリソース」があります。フォルダ内のすべての埋め込みリソースを一覧表示する

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

しかし、このフォルダ内のすべての*.txtのファイルを取得する方法があります:私は、ファイルを取得することができ、このコードでは

?それらのすべてを反復する名前のリストまたはメソッド

答えて

60

あなたは含まれているすべてのリソースの文字列の配列を返します

assembly.GetManifestResourceNames() 

をチェックアウトすることができます。そのリストをフィルタリングして、すべての*.txtファイルを埋め込みリソースとして保存することができます。

詳細はMSDN docs for GetManifestResourceNamesを参照してください。

1

これで試してみてください。ここにすべてのファイルがあります。

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

Tはもちろんあなたのタイプです。あなたは、一般的な

-3

ちょうど、使用することをこれを割れて、それを使用することができます。

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「ちょうどこれをひどく」。それは18ヶ月かかりましたか? :) –

+3

最初のfilenames = ToList()と次に各ファイル名items = filenames.ToArray()??? string.ToString()???私をからかってるの? – sasjaq

9

は、これを試してみてくださいフォルダディレクトリ内のすべての .txtファイルで配列を返します。

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

注:ファイル名を取得するには、//.Select(...行のコメントを解除します。

関連する問題