sourcetip

폴더에 포함된 모든 리소스 나열

fileupload 2023. 4. 18. 23:15
반응형

폴더에 포함된 모든 리소스 나열

제 솔루션에는 A에 몇 개의 파일이 있는 폴더가 있었습니다.이 모든 파일에는 빌드 액션 "Embedded Resource"가 있습니다.

이 코드로 파일을 얻을 수 있습니다.

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

하지만 모든 것을 얻을 수 있는 방법은 없을까?*.txt이 폴더에 파일을 저장하시겠습니까?이름 목록이나 그 모든 걸 반복하는 방법?

체크 아웃 할 수 있습니다.

assembly.GetManifestResourceNames()

포함된 모든 리소스의 문자열 배열을 반환합니다.그런 다음 이 목록을 필터링하여 모든 데이터를 찾을 수 있습니다.*.txt파일이 내장 리소스로 저장됩니다.

상세한 것에 대하여는, MSDN 문서를 참조해 주세요.

Folder 디렉토리 의 모든 .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(folderName.Length + 1))
        .ToArray();
}

메모: 주석 해제//.Select(...행을 지정하여 파일 이름을 가져옵니다.

이거 한번 먹어봐.여기서 모든 파일을 얻을 수 있습니다.

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

언급URL : https://stackoverflow.com/questions/8208289/list-all-embedded-resources-in-a-folder

반응형