当前位置: 代码迷 >> C# >> 关于txt读取的有关问题
  详细解决方案

关于txt读取的有关问题

热度:84   发布时间:2016-05-05 03:27:37.0
关于txt读取的问题
多行数据 我想一行一行的读取,然后把一行再分成几块存放到数组中 添加或者更新      

大神看我一行一行着读取 做的对不对 合理么 我自己运行一下午了 改了删删了该 总觉得不对
   protected void button_Click(object sender, EventArgs e)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\Users\123\Desktop\project\ConsoleApplication2\ConsoleApplication2\bin\Debug");
            foreach (var fi in di.GetFiles("*.txt", SearchOption.AllDirectories)) 
            {

                using (StreamReader sr = new StreamReader(fi.FullName, System.Text.Encoding.Default))
                {
                    string line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        string[] str = line.Split(':', '\n');
                        if (str[5].ToString() == "1")
                        {
                            if (str[1] == null)
                            {
                               //添加
                            }
                            else
                            {
                                //更新
                            }
------解决思路----------------------
你测试下来,功能实现了么?单独就你描述的这个功能,代码看起来是满足需要的。

有一些细节需要注意
DirectoryInfo di = new DirectoryInfo(@"C:\Users\123\Desktop\project\ConsoleApplication2\ConsoleApplication2\bin\Debug");

可以改成

DirectoryInfo di = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);//程序启动路径

另外,txt最好单独放一个文件夹。

str数组长度是否大于等于6,这个没判断,可能出现str[5]超出索引异常等等
------解决思路----------------------
你只要都读出来,放到string或List<string>里
剩下如何循环,如何判断,都跟txt本身没啥关系

既然不能保证文件里的数据所有行的列数都一致,那么必然是需要判断一下,以免索引溢出程序崩溃
------解决思路----------------------
引用:
代码里面不要带有str[5],str[1]这种东西,很容易出问题的!

这个问题其实和如何读txt无关的
这是对数组操作需要注意的问题
在不确定数组元素个数的情况下,不要胡乱使用下标访问
每个地方都应该做越界判断
  相关解决方案