c# .net获取文件夹下的所有文件(多层递归),并获取区间数据(Jsion,xml等数据)写出到处理文件,学习分享~

  static void Main(string[] args)
        {

    string path = string.Format(@"C:\Users\Administrator\Desktop\{0}", @"shenzheng");//根目录
            List<string> filePaths = GetAllDirectories(path);//返回根目录下所有文件(包括路径)的集合
            foreach (var item in filePaths)
            {
                StreamReader read = new StreamReader(item, Encoding.UTF8);//根据文件路径获取文件流
                string fileName = Path.GetFileNameWithoutExtension(item);//文件名
                string filePath = Path.GetDirectoryName(item);//文件所在文件夹
                if (!read.EndOfStream)//是否读取完成
                {
                    string aline = read.ReadToEnd();//读取全部------//string aline = read.ReadLine();读取一行
                    Console.WriteLine(read.ReadLine());
                    string keyStar = "***";//关键字开始
                    string ketEnd = "&&&";//关键字结束//获取之间的字符串
                    int star = aline.IndexOf(keyStar) + keyStar.Length;//加上keyStar所占的位数
                    int end = aline.IndexOf(ketEnd);
                    if (star > 0 && end > star)//未找到关键字
                    {
                        string newstr = aline.Substring(star, end - star);
                        Console.WriteLine(newstr);//打印到控制台,查看是否截取想要的信息
                        Console.WriteLine(fileName + "打印完毕");
                        //char[] dd = new char[] { ‘]‘, ‘,‘ };
                        string[] strs = newstr.Split(new string[] { "分割字符串" }, StringSplitOptions.RemoveEmptyEntries);//根据规则分割你想要的字符串获得字符串集合
                        StreamWriter sw = new StreamWriter(@"C:\Users\Administrator\Desktop\out\" + fileName + "处理.txt", false);//输出目录及文件名称定义
                        for (int i = 0; i < strs.Count(); i++)
                        {
                            Console.WriteLine(strs[i] + "," + (i + 1).ToString());//打印到控制台
                            sw.WriteLine(strs[i] + "," + (i + 1).ToString());//写到文件
                            sw.Flush();//清空StreamWriter缓存,否则会写不全
                            Thread.Sleep(20);

}
                        Console.WriteLine(fileName + "写入完毕");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("当前文档" + fileName + "没有符合规则的数据,跳过!");
                    }
                }
            }

      static List<string> filesList = new List<string>();
          public static List<string> GetAllDirectories(string rootPath)
          {
              string[] subPaths = Directory.GetDirectories(rootPath);//得到所有子目录

   foreach (string path in subPaths)
              {
                  GetAllDirectories(path);//对每一个字目录做与根目录相同的操作:即找到子目录并将当前目录的文件名存入List
              }
              string[] files = Directory.GetFiles(rootPath);
              foreach (string file in files)
              {
                  filesList.Add(file);//将当前目录中的所有文件全名存入文件List
              }
              return filesList;
          }

  }

时间: 2024-11-03 22:33:20

c# .net获取文件夹下的所有文件(多层递归),并获取区间数据(Jsion,xml等数据)写出到处理文件,学习分享~的相关文章

Android 使用存放在存assets文件夹下的SQLite数据库

因为这次的项目需要自带数据,所以就就把数据都放到一个SQLite的数据库文件中了,之后把该文件放到了assets文件夹下面.一开始打算每次都从assets文件夹下面把该文件夹拷贝到手机的SD卡或者手机自身的存储上之后再使用,后来考虑到每次都拷贝的话效率不高,并且如果涉及到对数据库的修改操作的话拷贝之后数据就被恢复了. 因此就写了该封装,该封装只是在第一次使用数据库文件的时候把该文件夹拷贝到手机的/data/data/应用程序报名/database文件夹下,之后就直接从这个地方使用了.并且它允许你

matlab如何读取某指定文件夹下的指定格式文件

%% 正负样本所在folder fext='*.png';%要读取的文件格式 positiveFolder='F:\课题\Crater detection\machingLearning\Positive Images\';%要读取文件的路径 dtPositive=dir([positiveFolder fext]);%将要读取文件的路径加格式组合 namePositiveCell={dtPositive.name};%读取指定文件夹下的所有符合格式要求的文件名元胞 %% 构造元胞,用来存储指定

C++如何用system命令获取文件夹下所有文件名

http://www.cplusplus.com/reference/cstdlib/system/ http://bbs.csdn.net/topics/30068943 #include <stdlib.h> 查找当前路径下文件名,并存入tmp.txt. system("dir > tmp.txt"); 查找绝对路径c:\folder下文件名,并存入tmp.txt. system("dir c:\\folder>tmp.txt"); C+

获取一个想要的指定文件的集合,获取文件夹下(包含子目录的所有.java的文件对象,并存储到集合中)

import java.io.File; import java.io.FileFilter; import java.io.ObjectInputStream.GetField; import java.util.ArrayList; import java.util.List; public class huoquwenjian { /*获取一个想要的指定文件的集合,获取文件夹下(包含子目录的所有.java的文件对象,并存储到集合中) * 思路: * 1,既然包含子目录,就需要递归. * 2

cocos2d-x3.2下获取文件夹下所有文件名的方法

这里提供一个函数获取文件夹下所有文件名的方法,直接上代码了. 原文地址:http://blog.csdn.net/qqmcy/article/details/36184733 // // VisibleRect.cpp // Test890 // // Created by 杜甲 on 14-4-28. // // std::vector<std::string> VisibleRect::getFilePathAtVec(std::string filePath) { std::vector

C++ 获取文件夹下的所有文件名

获取文件夹下所有的文件名是常用的功能,今天再一次有这样的需求,所有就在网上查找了很多,并记下以供后用. 原文:http://blog.csdn.NET/cxf7394373/article/details/7195661 原文:http://qiaoxinwang.blog.163.com/blog/static/86096452010612139172/ 头文件:#include<io.h> 1 char * filePath = "D:\\sample"; 1 vect

PHP遍历文件夹下的文件和获取到input name的值

<?php$dir = dirname(__FILE__); //要遍历的目录名字 ->当前文件所在的文件夹//$dir='D:\PHP\wamp\www\admin\hosts\admin'; //PHP遍历文件夹下所有文件 $handle=opendir($dir."."); $arr = array();while($file=readdir($handle)){  if(is_file($file)){ if ($file != "."&

获取文件夹下所有文件(包括子文件)放在list&lt;File&gt;中

public static List<File> getAllFileList(File rootFile) { return getAllFileList(rootFile.getAbsolutePath(), null); } /** * 获取文件夹下所有文件(包括子文件) * * @param filePath * @param fileList * @return */ public static List<File> getAllFileList(String fileP

获取某文件夹下所有文件名、文件夹名、后缀名

今天在提交github时,突然觉得提交得很慢,想到github允许设置.gitignore文件进行某些后缀名的忽略,于是乎决定好好设置一下.gitimnore. 于是乎....我发现,一个很大的项目,或者一个很杂乱的文件库,很难知道这里面到底存在哪些后缀名的文件,一个文件夹一个文件夹的找又太慢,而且容易出错. 于是乎....我开始敲代码了,顺带着把获取某文件夹下所有文件名.文件夹名.后缀名这三个功能一起实现了. [来看效果] 不输入参数时或者第一个参数输入"\"时,默认为当前目录,显示

获取列表中某一个文件夹下的列表项集合(不包含子文件夹对象,也不包含子文件夹中的列表项)

RT,方法如下: 1 SPListItemCollection GetSubItemsWithoutFoldersInParrentFolder(SPFolder parrent) 2 { 3 SPList list = parrent.Item.ParentList; 4 SPQuery query = new SPQuery(); 5 query.Folder = parrent; 6 query.Query = "<Where><Eq><FieldRef Na