在我的解決方案中,有一個包含少量文件的文件夾。所有這些文件都有Build Action「Embedded Resource」。列出文件夾中的所有嵌入式資源
有了這個代碼,我可以得到一個文件:
assembly.GetManifestResourceStream(assembly.GetName().Name + ".Folder.File.txt");
但是,有沒有什麼辦法讓這個文件夾中的所有文件*.txt
?一列名稱或一個方法遍歷它們都是?
在我的解決方案中,有一個包含少量文件的文件夾。所有這些文件都有Build Action「Embedded Resource」。列出文件夾中的所有嵌入式資源
有了這個代碼,我可以得到一個文件:
assembly.GetManifestResourceStream(assembly.GetName().Name + ".Folder.File.txt");
但是,有沒有什麼辦法讓這個文件夾中的所有文件*.txt
?一列名稱或一個方法遍歷它們都是?
你可以檢查出
assembly.GetManifestResourceNames()
返回的所有資源字符串數組包含。然後,您可以過濾該列表以查找作爲嵌入式資源存儲的所有*.txt
文件。
試試這個。這裏你得到所有文件
string[] embeddedResources = Assembly.GetAssembly(typeof(T)).GetManifestResourceNames();
T當然是你的類型。所以你可以使用它的通用
就破獲這一點,使用:
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());
}
}
試試這個,返回將所有.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(...
行以獲取文件名。
「只是破解了這個」。那花了18個月? :) –
first filenames = ToList()然後對於每個文件名items = filenames.ToArray()???然後string.ToString()???你在跟我開玩笑嗎? – sasjaq