C# 如何重命名(无视是否只读、等文件侠属性)文件侠,与操作

来源:互联网 发布:阿里云slb负载均衡 编辑:程序博客网 时间:2024/05/22 16:56

源代码:

using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Reflection;using System.Security.AccessControl;using System.Security.Principal;namespace packagehandler{class Program{static void Main(string[] args){//foreach (string arg in args){//    Console.WriteLine(arg);//}Dictionary<string, bool> cmdsKey = new Dictionary<string, bool>();Dictionary<string, string> cmds = new Dictionary<string, string>();cmdsKey["-i"] = true;cmdsKey["-o"] = true;cmds["-i"] = @"c:\11000";for (int i = 0; i < args.Length; i++){string arg = args[i];if ((args.Length - i) < 2) continue;if (cmdsKey[arg.ToLower()]) cmds[arg.ToLower()] = args[(++i)];}if (!cmds.ContainsKey("-i")){Console.WriteLine("-i cmd no found~");Console.WriteLine("ef:");Console.WriteLine("package.exe -i inputPath [-o outputPath]");Console.WriteLine("press any key to exit");Console.Read();return;}string inputPath = cmds["-i"];string outputPath;if (!cmds.ContainsKey("-o")){outputPath = inputPath + "_o";cmds["-o"] = outputPath;}else{outputPath = cmds["-o"];}foreach (KeyValuePair<string, string> var in cmds){Console.WriteLine(var.Key + ":" + cmds[var.Key]);}Dictionary<string, object> nameMap = new Dictionary<string, object>();nameMap["attack1"] = "1";nameMap["attack2"] = "2";nameMap["attacked"] = "3";nameMap["defend"] = "4";nameMap["ready"] = "5";nameMap["run"] = "6";ReplaceDirsNameHandler replaceDirsNameCallback = delegate(string path,ReplaceDirsNameHandler loop){string[] dirStrArr = Directory.GetDirectories(path);foreach (string dir in dirStrArr){if (Directory.Exists(dir)){DirectoryInfo di = new DirectoryInfo(dir);//looploop(di.FullName, loop);//Console.WriteLine(di.Name);//不存在名称map里if (!nameMap.ContainsKey(di.Name)) continue;string newpath = outputPath + "\\" + di.Parent.Name + "\\";string newName = newpath + nameMap[di.Name];//if (!Directory.Exists(newpath)) Directory.CreateDirectory(newpath);//重命名di.MoveTo(newName);}}};Directory.Delete(outputPath, true);CopyDir(inputPath, outputPath);replaceDirsNameCallback(outputPath, replaceDirsNameCallback);Console.WriteLine("dirs name replace complete!");Console.Read();}static bool CopyDir(string srcPath, string aimPath){try{// 检查目标目录是否以目录分割字符结束如果不是则添加之if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)aimPath += Path.DirectorySeparatorChar;// 判断目标目录是否存在如果不存在则新建之if (!Directory.Exists(aimPath))Directory.CreateDirectory(aimPath);// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组// 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法string[] fileList = Directory.GetFileSystemEntries(srcPath);// 遍历所有的文件和目录foreach (string file in fileList){// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件if (Directory.Exists(file)){CopyDir(file, aimPath + Path.GetFileName(file));}// 否则直接Copy文件else{File.Copy(file, aimPath + Path.GetFileName(file), true);}}return true;}catch{return false;}} internal delegate void ReplaceDirsNameHandler(string path,ReplaceDirsNameHandler loop);}}



原创粉丝点击