2013-08-28 1 views
2

내 코드에 리소스를 포함 했으므로 텍스트를 읽고 일부 문자열 변수에 텍스트를 적용하려고합니다. 나는 외부 파일을 사용하지만 때 나는 단지 한 .exe 나는 자원 (바람직하게는 새로운 절차없이)리소스로 포함 된 .txt 읽기

+0

http://msdn.microsoft.com/en-us/library/system.resources.resourcemanager.aspx – BartoszKP

+0

가능한 중복 [포함 된 리소스 텍스트 파일을 읽는 방법] (http://stackoverflow.com/questions/) 3314140/how-to-read-embedded-resource-text-file) –

+0

가능하면 코드를 변경하지 않고 리소스 파일을 사용하는 것에 관한 질문이 있으므로 중복되지 않습니다. 비록 내가'File.ReadAllText'를 변경하는 것이 아마도 받아 들일 수 있지만 스트림을 사용하는 것으로 변경하는 것이 더 큰 변화라고 생각할지라도 ... – Chris

답변

0

이입니다 을 config.txt 파일 읽을 수있는 방법

string setting_file = "config.txt"; 
string complete = File.ReadAllText(setting_file); 
string Filename = complete.Split('@').Last(); //"Test.zip"; 
string URL = complete.Split('@').First(); 

원하는 것을 할 방법을 일했다 포함 된 파일을 사용하는 방법 Properties.Resources.yourfilename

+1

이것은 리소스 관리자를 통해 추가 된 문자열에서만 작동하는 것 같습니다. 리소스로 포함 된 파일이 아닙니다 ... – Chris

3

File 클래스는 파일 시스템에 액세스하는 데에만 사용되지만 파일은 시스템에 더 이상 존재하지 않으므로이 줄을 변경해야합니다. 다른 사람들은 링크 된 답변을 암시 해 왔기 때문에 리소스에 대한 스트림을 얻은 다음이를 읽어야합니다. 아래 메서드는 File.ReadAllText 메서드 호출을 대체하기 위해 호출 할 수 있습니다.

private static string GetTextResourceFile(string resourceName) 
{ 
    var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName); 
    using (var sr = new StreamReader(stream)) 
    { 
     return sr.ReadToEnd(); 
    } 
} 

resourceName은 MyNamespace.Myfile.txt 행을 따라 표시됩니다. 리소스 이름을 찾는 데 문제가있는 경우 어셈블리의 GetManifestResourceNames 메서드를 사용하면 디버깅하는 동안 식별 할 수 있습니다.

또한 위의 메서드는 리소스를 찾을 수없는 경우 예외를 throw합니다. 이것은 실제 코드에서 처리되어야하지만 위의 샘플을 표준 오류 처리 코드와 혼동하고 싶지 않았습니다.

동일한 답변으로 다른 질문은 How to read embedded resource text file을 참조하십시오 (스트림에 대해서만 묻지만 실제로 스트림은 포함 된 리소스 파일에 액세스하는 유일한 방법 인 것처럼 보입니다).