C# 如何重命名(无视是否只读、等文件侠属性)文件侠,与操作
2012-10-10 21:07
351 查看
源代码:
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); //loop loop(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); } }
相关文章推荐
- C#如何判断某个文件夹是否为共享,访问权限为只读
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- [C#] Linq To Objects - 如何操作文件目录
- 如何使用C#操作快捷方式(获取快捷方式属性、创建快捷方式)
- 在VC中,如何修改文件的只读属性设置
- C# 操作只读文件
- C# 去除文件夹内部所有文件的只读属性,并清空文件夹。
- Excel操作Bug引出的问题:如何判断文件是否被占用、打开
- 在VC中,如何修改文件的只读属性设置(转)
- C# 如何判断指定文件是否正被其它程序使用
- 文件无法操作 只读属性 解决办法
- 在VC中,如何修改文件的只读属性设置(转)
- C# 判断 检测 access 建库 建表 文件是否存在等 数据操作 使用 ADOX
- C# 如何判断 List<T> 中包含某个属性的对象? 就是说,List<Person> 中如何判 断是否包含某一值
- Krpano学习:在C#中修改全景场景属性(C#操作全景vtour.xml文件及相关瓦片数据/panos/*.tiles)
- C#复制文件、设置隐藏,只读属性
- C# 判断 检测 access 建库 建表 文件是否存在等 数据操作 使用 ADOX
- C#文件读写追加创建目录,判断目录是否存在等操作
- c# 如何设置coboBox的只读属性
- c# 如何将文件删除到回收站(文件操作)