从资源中读取文本文件
问题描述:
我正在尝试以下代码来分割文本文件中的单词。从资源中读取文本文件
该文件是这样写的:
,代码如下:
string resource_data = Properties.Resources.textfile;
string[] result = resource_data.Split('"');
foreach (string lines in result)
{
if(comboBox1.Text == result[0])
{
richTextBox2.Text = result[2];
}
}
采取&从C++程序我正在与同一txt文件的工作完美编辑。
String^ resource_data = "textfile.txt";
try
{
StreamReader^ DataIn = File::OpenText(resource_data);
String^ DataStr;
int count = 0;
array<String^>^ result;
array<Char>^ separ = gcnew array<Char>{'"'};
while((DataStr = DataIn->ReadLine()) != nullptr)
{
count++;
result = DataStr->Split(separ);
if(comboBox1->Text == result[0]) // result[0] = Name
{
的代码做什么.. 阅读每一条线,因为它自己。 在每行结果[0]中给出第一个单词,因为每行上的第二个单词是结果[1]等。 当我在组合框中选择一个单词时,检查它是否与文本文件中的单词相同,并且使用该行在结果[x]中。 但在C#中,它给出了所有单词自己的结果[x],行不重要。
我如何使C++中的以下代码在C#中工作,但在resources.resx中有文本文件?
答
我想我明白了问题所在。您首先需要将字符串resource_data分成不同的行。
string[] lines = resource_data.Split(new string[1] { Environment.NewLine }, StringSplitOptions.None);
foreach (var line in lines)
{
string[] parts = line.Split('"');
if (comboBox1.Text == result[0])
{
richTextBox2.Text = result[2];
}
}
你也可以做到这一点使用一个StringReader:
using (StringReader reader = new StringReader(resource_data))
{
while (reader.Peek() >= 0)
{
string[] parts = reader.ReadLine().Split('"');
if (comboBox1.Text == result[0])
{
richTextBox2.Text = result[2];
}
}
}
此外,如果你只保存到文件的路径,你可以通过分裂resource_data在新行字符(县)这样做在资源中,您可以打开文件并从中读取:
using (StreamReader reader = File.OpenText(resource_path)) // path to file
{
while (reader.Peek() >= 0)
{
string[] parts = reader.ReadLine().Split('"');
if (comboBox1.Text == result[0])
{
richTextBox2.Text = result[2];
}
}
}
非常感谢您的回答。第一个工作完美。第二个一直给出null,第三个给出错误:路径中的非法字符。再次感谢您的帮助:) – Xakzi 2014-10-08 19:41:30
第三个是如果您只存储文件的路径而不是文件的内容,但无论如何乐意提供帮助! – 2014-10-08 19:44:59