求助怎么用C# 取一个文件夹中所有的txt的行数并且写入dataGridView

时间:2022-05-05 19:56:37
计算txt的行数 和 dataGridView单元格一一对应

各个txt文件内容为(例):
E00401504EB9FE7D
E00401504EB9FE7D
E00401504EB9FE7D
E00401502BB0D3DF
E00401502BB0D3DF


txt
第一站第一时段  第一站第二时段.........

dataGridView
站数/时段   第1时段   第2时段   第3时段   第4时段
第1站
第2站
第3站

本人纯属菜鸟需要各位大神源代码 

9 个解决方案

#1


技术差,连描述都不清楚,txt例子和gv的描述看不懂是怎么对应的

#2


计算txt的行数 输出到dataGridView单元格中

#3


大学还没毕业呢 水平不高实在抱歉

#4


1.遍历文件夹中的所有txt文件,一般用递归。
2.获取每个txt文件的行数。
3.所有txt文件行数求和。

            DirectoryInfo di = new DirectoryInfo(@"D:\");
            List<string> list  =new List<string>();
            GetFile(di, list);



        /// <summary>
        /// 
        /// </summary>
        /// <param name="dir">文件夹</param>
        /// <param name="listFilePath">得到的所有txt文件全路径</param>
        private void GetFile(DirectoryInfo dir,List<string> listFilePath)
        {
            if (dir.Exists)
            {
                foreach (FileInfo file in dir.GetFiles())
                {
                    if (file.Name.Contains(".txt"))
                    {
                        listFilePath.Add(file.DirectoryName + "\\" + file.Name); ;
                        //文件的行数
                        int rowCount=0;
                        using (StreamReader sr = new StreamReader(file.DirectoryName + "\\" + file.Name))
                        {
                            while(sr.ReadLine()!=null)
                            {
                                rowCount++;
                            }
                        }


                        

                    }
                }
                foreach (DirectoryInfo subDir in dir.GetDirectories())
                {
                    GetFile(subDir, listFilePath);
                }
            }
        }


#5


private int GetFile(DirectoryInfo dir,List<string> listFilePath)
        {
int rowCount = 0;
            if (dir.Exists)
            {
                foreach (FileInfo file in dir.GetFiles().Where(x => x.Name.EndsWith(".txt")))
                {
                    rowCount += File.ReadAllLines(file.Name).Count();
                }
            }
                foreach (DirectoryInfo subDir in dir.GetDirectories())
                {
                     rowCount += GetFile(subDir, listFilePath);
                }
return rowCount;
        }

#6


一行一行读取内容用StreamReader就可以

#7


你举的例子,着实没看懂

#8


引用 6 楼 FoxDave 的回复:
一行一行读取内容用StreamReader就可以

用这个就可以。

#9


E00401504EB9FE7D和你所谓的站数是什么关系……
然后你多个txt之间的内容会有关联么?这里所谓的关联,就是你的  站数/时段   第1时段   第2时段   第3时段   第4时段 涉及的数据同时出现在不同的txt里面

#1


技术差,连描述都不清楚,txt例子和gv的描述看不懂是怎么对应的

#2


计算txt的行数 输出到dataGridView单元格中

#3


大学还没毕业呢 水平不高实在抱歉

#4


1.遍历文件夹中的所有txt文件,一般用递归。
2.获取每个txt文件的行数。
3.所有txt文件行数求和。

            DirectoryInfo di = new DirectoryInfo(@"D:\");
            List<string> list  =new List<string>();
            GetFile(di, list);



        /// <summary>
        /// 
        /// </summary>
        /// <param name="dir">文件夹</param>
        /// <param name="listFilePath">得到的所有txt文件全路径</param>
        private void GetFile(DirectoryInfo dir,List<string> listFilePath)
        {
            if (dir.Exists)
            {
                foreach (FileInfo file in dir.GetFiles())
                {
                    if (file.Name.Contains(".txt"))
                    {
                        listFilePath.Add(file.DirectoryName + "\\" + file.Name); ;
                        //文件的行数
                        int rowCount=0;
                        using (StreamReader sr = new StreamReader(file.DirectoryName + "\\" + file.Name))
                        {
                            while(sr.ReadLine()!=null)
                            {
                                rowCount++;
                            }
                        }


                        

                    }
                }
                foreach (DirectoryInfo subDir in dir.GetDirectories())
                {
                    GetFile(subDir, listFilePath);
                }
            }
        }


#5


private int GetFile(DirectoryInfo dir,List<string> listFilePath)
        {
int rowCount = 0;
            if (dir.Exists)
            {
                foreach (FileInfo file in dir.GetFiles().Where(x => x.Name.EndsWith(".txt")))
                {
                    rowCount += File.ReadAllLines(file.Name).Count();
                }
            }
                foreach (DirectoryInfo subDir in dir.GetDirectories())
                {
                     rowCount += GetFile(subDir, listFilePath);
                }
return rowCount;
        }

#6


一行一行读取内容用StreamReader就可以

#7


你举的例子,着实没看懂

#8


引用 6 楼 FoxDave 的回复:
一行一行读取内容用StreamReader就可以

用这个就可以。

#9


E00401504EB9FE7D和你所谓的站数是什么关系……
然后你多个txt之间的内容会有关联么?这里所谓的关联,就是你的  站数/时段   第1时段   第2时段   第3时段   第4时段 涉及的数据同时出现在不同的txt里面