日期:2014-05-17  浏览次数:21013 次

C#:读取和写回自定义格式文件内容,求代码
本帖最后由 yesswlqbj 于 2013-09-25 16:56:30 编辑
现在正在做一个关于数据接口的工作,目的是在不将我们自有数据提供给用户的情况下,按照用户要求进行相关分析和操作,最后只将结果反馈给用户。数据文件有两种,一种是源数据文件,一种是处理结果文件,为避免和普通文本文件混淆,将其后缀名自定义为.aaa和.bbb,怎样找到这两种文件并把其中的内容读取出来?文件内容中行与行之间以空格隔开,行内以逗号隔开,如下:0.1  0.2  0.31,0.32,0.33,0.34,0.35,0.36,0.37,0.38 0.4,现在还希望取到其中第3行,将这行中的数字放入一个数组中,并将数组的内容依次显示在一Form中的多个text控件上,现在只知道需要读入的数据在C盘下名为in.aaa的文件中,是第三行,但不知道有几个,读取成功后用户可做修改操作,再写回原数据文件。
本人刚接触C#,求代码,谢谢!

------解决方案--------------------
streamreader可以逐行读取,split按空格分隔成数组,遍历数组或列表,new TextBox
------解决方案--------------------
var lines = File.ReadAllText("c:/in.aaa").Split(' ');
string line3 = lines[2];
lines[2] = "xxxx"; // 修改第三行
File.WriteAllText("c:/in.aaa", string.Join(" ", lines));

------解决方案--------------------
根据一行生成TextBox:
string line3 = "a,b,c,d";
var fields = line3.Split(',');
var panel = new FlowLayoutPanel();
foreach (string s in fields)
{
    var tb = new TextBox() {Text = s};
    panel.Controls.Add(tb);
}
this.Controls.Add(panel);

------解决方案--------------------
var panel = Controls.Cast<Control>().First(c => c is FlowLayoutPanel);
var fields = panel.Controls.OfType<TextBox>().Select(c => c.Text);
string line3 = string.Join(",", fields);
lines[2] = "xxxx"; // 修改第三行
File.WriteAllText("c:/in.aaa", string.Join(" ", lines));

------解决方案--------------------
引用:
Quote: 引用:

根据一行生成TextBox:
string line3 = "a,b,c,d";
var fields = line3.Split(',');
var panel = new FlowLayoutPanel();
foreach (string s in fields)
{
    var tb = new TextBox() {Text = s};
    panel.Controls.Add(tb);
}
this.Controls.Add(panel);



现在显示是可以了,如果我在text中作了修改,那要怎样把显示出来的内容再按原路写回文件呢?
对于文件,只能覆盖了。不能像数据库似的只修改某一行。