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;
}
}