C#语言读取txt行列数据

Posted 极客飓风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#语言读取txt行列数据相关的知识,希望对你有一定的参考价值。

我们常常会把类似坐标一样的二维数组放在txt文件中
那我们如何能准确的读取每一个数据呢?

 首先看一个C#窗口体应用程序中一段代码:

public struct Point
        
            public double X;
            public double Y;
        
        private void button1_Click(object sender, EventArgs e)
        
            //---- 读取数据 -----//
            OpenFileDialog filename = new OpenFileDialog(); //定义打开文件
            filename.InitialDirectory = Application.StartupPath; //初始路径,这里设置的是程序的起始位置,可自由设置
            filename.Filter = "All files(*.*)|*.*|txt files(*.txt)|*.txt";//设置打开类型,设置个*.*和*.txt就行了
            filename.FilterIndex = 2;                  //文件类型的显示顺序(上一行.txt设为第二位)
            filename.RestoreDirectory = true; //对话框记忆之前打开的目录
            if (filename.ShowDialog() == DialogResult.OK)
            
                label14.Text = filename.FileName.ToString();//获得完整路径在textBox1中显示
                StreamReader sr = new StreamReader(filename.FileName);//将选中的文件在textBox2中显示(filename.FileName, Encoding.Default)
                richTextBox1.Text = sr.ReadToEnd();
                sr.Close();
            

            //----- 处理数据 ----//
            // 读出文本文件的所有行
            string[] lines = File.ReadAllLines(filename.FileName);
            // 点列表集合
            List<Point> points = new List<Point>();     

            //从第一行开始处理
            for (int i = 0; i < lines.Length; i++)
            
                string line = lines[i];
                // 拆分行
                string[] v = line.Split(new char[]  ' ' , StringSplitOptions.RemoveEmptyEntries);
                Point p;
                // 获取Y(第一列)        
                p.X = double.Parse(v[0]);
                // 获取Y(第二列)        
                p.Y = double.Parse(v[1]);
                points.Add(p);
                // 至此,所有的数据点都在列表集合points中了
            
            //在RichTextBox显示List列表第二列(0是第一列)中的结构体对象Y
            richTextBox1.Text = richTextBox1.Text + points[1].Y;

        

首先定义一个结构体,包含X坐标数据与Y坐标数据:

 public struct Point
        
            public double X;
            public double Y;
        

然后是读取一个txt文件,获取所有数据,同时将每一列中的数据读取为列表中的X轴坐标与Y轴坐标:

 //----- 处理数据 ----//
            // 读出文本文件的所有行
            string[] lines = File.ReadAllLines(filename.FileName);
            // 点列表集合
            List<Point> points = new List<Point>();       

            // 让过第一行,从第二行开始处理
            for (int i = 0; i < lines.Length; i++)
            
                string line = lines[i];
                // 拆分行
                string[] v = line.Split(new char[]  ' ' , StringSplitOptions.RemoveEmptyEntries);
                Point p;
                // 获取Y(第一列)        
                p.X = double.Parse(v[0]);
                // 获取Y(第二列)        
                p.Y = double.Parse(v[1]);
                points.Add(p);
                // 至此,所有的数据点都在列表集合points中了
            

 可以看到,读取第二列Y轴数据为13,是正确的。

--------------------------------------------------------------------

欢迎交流与相互学习(微信:estorm22).

以上是关于C#语言读取txt行列数据的主要内容,如果未能解决你的问题,请参考以下文章

C#语言读取txt行列数据

R语言数据转置

c#二进制文件的写入和读取

C# 如何读取一个文件夹下的多个文件内容

c#中怎么读取txt文件的最后几行

记录C#常用的代码片段