首页 新闻 搜索 专区 学院

C# 遍历文件夹的所有txt文档然后然后对每个文档进行读取,搜索每个文档符合条件的数据

0
悬赏园豆:10 [待解决问题]

C# 遍历文件夹的所有txt文档然后然后对每个文档进行读取,搜索每个文档符合条件的数据,然后把数据显示页面上。

云端阿彬的主页 云端阿彬 | 初学一级 | 园豆:159
提问于:2012-11-07 14:18
< >
分享
所有回答(2)
0
foreach (var file in Directory.GetFiles(_filepath))
            {
                if(new FileInfo(file).Name.EndsWith(".txt"))
              {
             string str = "";
            using (var fs = new FileStream(_filepath + new FileInfo(file).Name, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                using (var sr = new StreamReader(fs))
                {
                    str = sr.ReadToEnd();
                }
            }
              }
            }
田林九村 | 园豆:2367 (老鸟四级) | 2012-11-07 14:23

这个是文件夹里面所有txt文档中的数据吗。好像是搜索文件名的

支持(0) 反对(0) 云端阿彬 | 园豆:159 (初学一级) | 2012-11-07 14:25
0

思路:先获取到目录里的所有记事本文件的物理路径存放到list里(支持无限递归 即文件夹里有文件夹 里面才是记事本)

一行一行读取list里没个记事本文件的每一行 拿到需要的数据 使用到:readLine indexof等

拿到所有符合条件的数据 最后显示的页面上

代码片段:

//递归
        public static void GetTxt(DirectoryInfo dir)
        {
            FileInfo[] files = dir.GetFiles();

            FileAttributes fa;
            foreach (FileInfo item in files)
            {
                //if (item.Extension == ".txt")
                //{
                //遍历时忽略隐藏文件
                fa = item.Attributes & FileAttributes.Hidden;
                if (fa != FileAttributes.Hidden)
                {
                    //MessageBox.Show(item.FullName);
                    //所有的记事本全路径全部放入list集合中
                    list.Add(item.FullName);
                }
                //}
            }

            DirectoryInfo[] dirs = dir.GetDirectories();   //获取子目录
            foreach (DirectoryInfo item in dirs)
            {
                GetTxt(item);
            }
        }

//循环list里所有记事本文件
foreach (string item in list)
            {

                FileStream fs = new FileStream(item, FileMode.Open);
                StreamReader reader = new StreamReader(fs, Encoding.Default);
               try
                {
                    //循环读取记事本
                    while (true)
                    {
                        string str = reader.ReadLine();
                        if (str == null)
                        {
                            break;
                        }
                        else if (str.Trim() == "")
                        {
                            continue;
                        }
                        else
                        {
                  //这里就是每行数据了  你可以进行处理 取出符合要求的行
                        }
               }
oppoic | 园豆:570 (小虾三级) | 2012-11-07 14:33

list是定义的数组吗

支持(0) 反对(0) 云端阿彬 | 园豆:159 (初学一级) | 2012-11-07 14:45

@午夜梦回: 泛型集合  list<string>

上面给的知识代码片段,你照着这个思路可以写出来的

我本来的代码是遍历数百个记事本 千万行数据 截取处理 然后插入数据库

你的要求按照这个思路也能写出来,多试试吧

支持(0) 反对(0) oppoic | 园豆:570 (小虾三级) | 2012-11-07 15:12

@心态要好: //这里就是每行数据了 你可以进行处理 取出符合要求的行 

这块要怎么写,比如我要查找的数据是Sender=你好 能给个代码吗,没有写过这个快

支持(0) 反对(0) 云端阿彬 | 园豆:159 (初学一级) | 2012-11-08 09:40

@午夜梦回: 

if(str.indexof("Sender=你好")!=-1)
{
此行包括“Sender=你好”几个字
}
else
{
不包括“Sender=你好”
}
支持(0) 反对(0) oppoic | 园豆:570 (小虾三级) | 2012-11-08 10:23

@心态要好: 我如果是在指定的盘符读取指定的文件的。是不是这样做?

string file = @"F:\5.开发文档\type.txt";
if (File.Exists(file))
{
FileStream fs = new FileStream(file,FileMode.Open,FileAccess.Read);
StreamReader sr = new StreamReader(fs);
string linc = sr.ReadLine();
while(linc!=null)
{
Console.WriteLine(linc);
linc = sr.ReadLine();
}
sr.Close();
fs.Close();
}

支持(0) 反对(0) smile to life | 园豆:154 (初学一级) | 2014-07-14 13:57

你能告诉我读取文档的思路吗?

支持(0) 反对(0) smile to life | 园豆:154 (初学一级) | 2014-07-14 13:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册