1

我需要创建一个将读取文件的应用程序,如下所示:

Font = "Courier New"
Size = "10"
Style = "Bold"

正如你所看到的,我将使用它来设置 TextBox 的一些属性,但我将存储这些引号内的每个内容并将它们存储在一些变量(、、、textFonttextSizetextStyle

我认为我可以使用此语法打开带有文件的流:

StreamReader reader = new StreamReader("confs.txt");

问题是:

  • 声明 StreamReader 时,它将读取应用程序目录中的文件?(只是确认)
  • 如何仅读取引号内的内容并将每个内容存储在字符串中?

我认为,文件 I/O 在 Windows Mobile 和 Windows 中是相同的。最好的祝福

4

3 回答 3

3

像这样的东西怎么样:

foreach(string s in FileLines) {
  string[] data = s.Split(new[] { '=' });
  // property is in data[0]
  // value is in data[1]
}

您创建的是一个简单的 CSV 文件

CSV 我的意思是字符分隔值...

更新

好的,似乎您正在尝试完全复制而不是理解算法,所以我将在这里创建一个新的

StreamReader reader = new StreamReader("confs.txt");
while(reader.peek >= 0) {
   string l = reader.ReadLine();
   string[] data = l.Split(new[] { '=' });
   // property is in data[0]
   // value is in data[1]
}
reader.Close();
reader.Dispose();
于 2009-11-11T23:07:52.870 回答
2

最好声明完整路径,或使用以下语法:

System.IO.Path.Combine((new System.Uri(Assembly.GetEntryAssembly().CodeBase)).AbsolutePath, "confs.txt");

我认为要解析它,您可以更轻松地将文件保存为 Xml 并将其加载到 XmlDocument 中。或者更好的是,放弃这个想法,将 tine 信息存储在 app.config 文件中。它非常容易,如果需要,您仍然可以在记事本中编辑它而无需重新编译。

(这会使答案的前半部分没有实际意义)

于 2009-11-11T23:07:48.547 回答
2

1:只要不改变当前目录,可以。不过,有更彻底的方法来获取应用程序目录

2:任意数量的方式来解析这样的字符串;string.Split, Regex, 等; 纯粹作为说明,我将(ab)使用DbConnectionStringBuilder

using (StreamReader reader = File.OpenText("data.txt")) {
    string line;
    DbConnectionStringBuilder db = new DbConnectionStringBuilder();
    while ((line = reader.ReadLine()) != null) {
        db.ConnectionString = line;
        foreach (string key in db.Keys) {
            Console.WriteLine(key);
            Console.WriteLine(db[key]);
        }
    }
}

DbConnectionStringBuilderwindows-mobile 中可能不存在编辑;也许只是Split打开=或使用Regex;它归结为确切的格式。

于 2009-11-11T23:07:52.620 回答