C# 使用文件

C# 使用文件,c#,file-io,windows-mobile-5.0,C#,File Io,Windows Mobile 5.0,我需要创建一个将读取文件的应用程序,如下所示: Font = "Courier New" Size = "10" Style = "Bold" foreach(string s in FileLines) { string[] data = s.Split(new[] { '=' }); // property is in data[0] // value is in data[1] } 如您所见,我将使用它来设置文本框的一些属性,但我将存储这些引号中的每个内容,并将它们存储在一

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

Font = "Courier New"
Size = "10"
Style = "Bold"
foreach(string s in FileLines) {
  string[] data = s.Split(new[] { '=' });
  // property is in data[0]
  // value is in data[1]
}
如您所见,我将使用它来设置文本框的一些属性,但我将存储这些引号中的每个内容,并将它们存储在一些变量上(
textFont
textSize
textStyle

我认为我可以使用以下语法打开文件流:

StreamReader reader = new StreamReader("confs.txt");
问题是:

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

我认为,在Windows Mobile和Windows中,文件I/O是唯一的。最好声明完整路径,或使用以下语法:

System.IO.Path.Combine((new System.Uri(Assembly.GetEntryAssembly().CodeBase)).AbsolutePath, "confs.txt");
我认为要解析它,将文件保存为Xml并将其加载到XmlDocument中会更容易。或者更好的是,放弃这个想法,将时间信息存储在app.config文件中。它非常简单,如果需要,您仍然可以在记事本中编辑它,而无需重新编译


(这将使答案的前半部分变得毫无意义)

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

System.IO.Path.Combine((new System.Uri(Assembly.GetEntryAssembly().CodeBase)).AbsolutePath, "confs.txt");
我认为要解析它,将文件保存为Xml并将其加载到XmlDocument中会更容易。或者更好的是,放弃这个想法,将时间信息存储在app.config文件中。它非常简单,如果需要,您仍然可以在记事本中编辑它,而无需重新编译


(这将使答案的前半部分变得毫无意义)

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

编辑
数据库连接StringBuilder
在windows mobile中可能不存在;可能只是在
=
上拆分
或使用
正则表达式
;它可以归结为精确的格式。

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

编辑
数据库连接StringBuilder
在windows mobile中可能不存在;可能只是在
=
上拆分
或使用
正则表达式
;它可以归结为精确的格式。

这样的格式怎么样:

Font = "Courier New"
Size = "10"
Style = "Bold"
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();

像这样的怎么样:

Font = "Courier New"
Size = "10"
Style = "Bold"
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();

正如麦克斯韦·斯马特所说——你相信吗,被这么多打败了!你的帖子和我的一样,但你的解决方案看起来比我的“老式”方式更优雅!正如麦克斯韦·斯马特所说——你相信吗,被这么多打败了!你的帖子和我的一样,但你的解决方案看起来比我的“老式”方式更优雅!我认为将其称为CSV文件是对定义的延伸。我理解,但我不会将其称为配置文件,因为每个KeyFileLine都没有节,只是字符串的示例数组。这是一个关于如何拆分字符串的示例。我确信您知道如何逐行读取文件或将文件读入数组是吗?字符串l=reader.ReadLine();应该是字符串s=reader.ReadLine();我认为将其称为CSV文件是对定义的延伸。我理解,但我不会将其称为配置文件,因为每个KeyFileLine都没有节,只是字符串的示例数组。这是一个关于如何拆分字符串的示例。我确信您知道如何逐行读取文件或将文件读入数组是吗?字符串l=reader.ReadLine();应该是字符串s=reader.ReadLine();