web-dev-qa-db-ja.com

C#リソースからテキストファイルを読み取る

リソースからファイルを読み取り、リストに追加する必要があります。私のコード:

private void Form1_Load(object sender, EventArgs e)
{
    using (StreamReader r = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("myProg.myText.txt")))
    {
        //The Only Options Here Are BaseStream & CurrentEncoding
    }
}

これを検索したところ、"Assembly.GetExecutingAssembly...."しかし、私のプログラムにはアセンブリのオプションがありません。

18
Dobz

このようなものを試してください:

string resource_data = Properties.Resources.test;
List<string> words = resource_data.Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries).ToList();

どこ

enter image description here

33
PaRiMaL RaJ

アセンブリにアクセスするには、ヘッダーにusing System.Reflection;を含める必要があります。これは、VSでファイルを「埋め込みリソース」としてマークする場合のみです。

var filename = "MyFile.txt"
System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNameSpace." + filename));

「using System.Reflection;」を含める限り次のようにアセンブリにアクセスできます。

Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace." + filename);

または、ファイル名を変更する必要がない場合は、次を使用します。

Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace.MyFile.txt");

完全なコードは次のようになります。

using(var reader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("myProg.m‌​yText.txt"))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        // Do some stuff here with your textfile
    }
}
8
Pete Garafano

これに従うだけで、AppDeveloperソリューションを使用できます。

string resource_data = Properties.Resources.test;
string [] words = resource_data.Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);
foreach(string lines in words){
.....
}
1
thaFaxGuy