C#遍历所有文件夹处理
来源:互联网 发布:口袋操作系统 linux 编辑:程序博客网 时间:2024/04/28 04:03
说明:
某日某天的某个时候,程序出现了日狗的情况,不得不对所有Unity创建的所有.cs脚本进行批处理(修改指定的字符串之类的),光不要说需要修改的.cs脚本有四五十个,一个个的修改不光修改浪费时间,而且害怕处理修改不全面的情况。。。于是乎,只有自己写一个批处理文件的控制台脚本处理所有的.cs脚本。
特别需要说明的是,由于需要遍历的文件太多以及涉及到递归操作,特意使用了线程在C#控制台中处理,在Unity中尝试过运行该脚本,容易出现卡死的情况。
遍历所有的.cs文件
/// <summary> /// 获取所有的.cs文件 /// </summary> public static List<string> FindAllFiles(string fileDicPath) { if (!Directory.Exists(fileDicPath)) { Console.WriteLine("文件夹不存在"); return null; } List<string> fileList = new List<string>(); //遍历文件夹 DirectoryInfo theFolder = new DirectoryInfo(fileDicPath); FileInfo[] thefileInfo = theFolder.GetFiles("*.cs", SearchOption.TopDirectoryOnly); foreach (FileInfo NextFile in thefileInfo) //遍历文件 fileList.Add(NextFile.FullName); //遍历子文件夹 DirectoryInfo[] dirInfo = theFolder.GetDirectories(); foreach (DirectoryInfo NextFolder in dirInfo) { FileInfo[] fileInfo = NextFolder.GetFiles("*.cs", SearchOption.AllDirectories); foreach (FileInfo NextFile in fileInfo) //遍历文件 fileList.Add(NextFile.FullName); } return fileList; }
读取单个.cs文件
/// <summary> /// 读取单个的.cs文件内容 /// </summary> static void ReadCSText(string path) { StreamReader sr = new StreamReader(path, Encoding.Default); Console.WriteLine(path); string text; StringBuilder sb = null; if ((text = sr.ReadToEnd()) != null) { sb = new StringBuilder(text); //自行处理读取、修改的操作 //for (int i = 0; i < ChineseString.Count; i++) //{ // //Console.WriteLine(ChineseString[i] + " " + key[i]); // //line.Replace(ChineseString[i], key[i]); // //sb.Replace(ChineseString[i], key[i]); // //sb.Replace(ChineseString[i], key[i]); // sb.Replace("Toast.ShowText(" + key[i], "Toast.ShowText(I2.Loc.LocalizationManager.GetTermTranslation(" + key[i] + ")"); //} } sr.Close(); if (sb != null) { var str = sb.ToString(); Console.WriteLine(str); StreamWriter sw = new StreamWriter(path, false, Encoding.Default); sw.Write(str); sw.Flush(); sw.Close(); } Console.WriteLine("完成"); }
读取所有的.cs文件
/// <summary> /// 读取所有.cs文件的内容 /// </summary> static void ReadAllCSText() { List<string> listPath = FindAllFiles(DicPath); if (listPath == null) return; foreach (var varPath in listPath) { ReadCSText(varPath); } }
以线程的方式读取
static void Main(string[] args) { //路径自己修改 //DicPath = "E:/XXQQ_ProjectAssets/"; t = new Thread(ReadAllCSText); t.Start(); Console.ReadKey(); }
关闭线程
void OnDestroy() { if (t != null) { t.Abort(); } }
运行如下所示:
0 0
- C#遍历所有文件夹处理
- C#遍历文件夹中的所有文件
- C#遍历目录下的所有文件夹
- C#遍历指定文件夹中的所有文件
- C#遍历指定文件夹中的所有文件
- c# 遍历指定文件夹所有东西 Q_Q
- C#遍历指定文件夹中的所有文件
- C#遍历目录下的所有文件夹
- C#遍历指定文件夹中的所有文件
- C#遍历指定文件夹中的所有文件
- C#遍历指定文件夹中的所有文件
- C#遍历指定文件夹中的所有文件
- C#遍历指定文件夹中的所有文件
- C#遍历指定文件夹中的所有文件
- C#遍历指定文件夹中的所有文件
- C#遍历指定文件夹中的所有文件
- C#遍历指定文件夹中的所有文件
- c#遍历文件夹下所有文件
- MSDN对链接器工具错误 LNK2019的解释
- 用jxl将mysql的数据结构导入到excel中
- 坐标转换
- POJ-3069 Saruman's Army (贪心)
- Java Bean以及xsd相互生成
- C#遍历所有文件夹处理
- 让chrome浏览器支持ajax跨域
- spring——控制反转
- linux系统之_进程及内存管理的前世今生
- 材质颜色
- 选择器之相邻兄弟选择器
- 怎样通过PDF编辑器来编辑修改PDF文件
- 一段Android实现应用下载并自动安装apk包的代码
- arguments对象