using System; using System.IO; using System.Security; namespace demoSystemIOPath { class Program { static void Main(string[] args) { Console.Clear(); Program.ShowMenu(); while (true) { char[] commandCode = Console.ReadLine().ToCharArray(); if (commandCode.Length != 0) { switch (commandCode[0]) { case 'A': case 'a': Program.ChangeExtension(); // 修改文件扩展名 break; case 'B': case 'b': Program.CombineString(); // 合并路径字符串 break; case 'C': case 'c': Program.GetDirectoryName(); // 获得指定目录字符串的目录信息 break; case 'D': case 'd': Program.GetExtension(); // 获得文件扩展名 break; case 'E': case 'e': Program.GetFileName(); // 获得文件名 break; case 'F': case 'f': Program.GetFileNameWithoutExtension(); // 获得不带扩展名的文件名 break; case 'G': case 'g': Program.GetFullPath(); // 获得文件/路径的绝对路径 break; case 'H': case 'h': Program.GetInvalidFileNameChars(); // 获得不合法的文件名字符 break; case 'I': case 'i': Program.GetInvalidPathChars(); // 获得不合法的路径字符 break; case 'J': case 'j': Program.GetRandomFileName(); // 获得强随机文件(夹)名称 break; case 'K': case 'k': Program.GetRootPath(); // 获得指定路径的根目录信息 break; case 'L': case 'l': Program.GetTempFileName(); // 创建临时文件 break; case 'M': case 'm': Program.GetTempPath(); // 返回系统当前的临时文件加路径 break; case 'N': case 'n': Program.HasExtension(); // 判断路径字符串是否包含扩展名 break; case 'O': case 'o': Program.IsPathRooted(); // 判断路径字符产包含绝对路径还是相对路径 break; case 'Q': case 'q': return; } } } } static public void ChangeExtension() // 修改文件扩展名 { Console.WriteLine(@"请输入需要更改扩展名的路径字符串(相对/绝对路径):"); string pathString = Console.ReadLine(); // 读入路径字符串 Console.WriteLine(@"请输入目标扩展名或直接回车移除扩展名(包含句点):"); string extenionString = Console.ReadLine(); // 读入目标扩展名 string destString = ""; // 储存修改后的路径字符串 // 判断文件/路径是否存在 if (!(File.Exists(pathString)) || (Directory.Exists(pathString))) { Console.WriteLine(@"路径/文件不存在。"); return; } try { // 获得修改后的文件字符串,若extensionString为null则取出扩展名 destString = Path.ChangeExtension(pathString, extenionString); // 文件重命名的实质就是移动文件 File.Move(pathString, destString); // 结束 Console.WriteLine(@"扩展名更改成功!"); // 输出结果 Console.WriteLine(@"结果为:{0}", destString); } catch (ArgumentException) { // 指定路径字符串包含一个或多个不合法的字符 Console.WriteLine(@"指定的路径字符串包含不合法的字符。"); return; } } static public void CombineString() // 合并路径字符串 { Console.WriteLine(@"请输入路径字符串A:"); string pathA = Console.ReadLine(); // 读入第一个路径字符串 Console.WriteLine(@"请输入路径字符串B:"); string pathB = Console.ReadLine(); // 读入第二个路径字符串 string pathResult = ""; // 储存合并后的结果 try { // 合并两个路径字符串 pathResult = Path.Combine(pathA, pathB); // 结束 Console.WriteLine(@"合并结束。"); // 输出结果 Console.WriteLine(@"结果为:{0}", pathResult); } catch (ArgumentNullException) { // 包含空字符串 Console.WriteLine(@"路径字符串不能为空。"); return; } catch (ArgumentException) { // 指定路径字符串包含一个或多个不合法的字符 Console.WriteLine(@"指定的路径字符串包含不合法的字符。"); return; } } static public void GetDirectoryName() // 获得指定目录字符串的目录信息 { Console.WriteLine(@"请输入路径字符串:"); string pathString = Console.ReadLine(); // 获得路径字符串 string resultString = ""; // 储存结果 try { Path.GetDirectoryName(pathString); // 提取路径信息 // 结束 Console.WriteLine(@"获取目录信息结束。"); // 输出结果 Console.WriteLine(@"结果为:{0}", resultString); } catch (ArgumentException) { // 路径字符串中包含一个或多个不合法的字符 Console.WriteLine(@"路径字符串中包含一个或多个不合法的字符。"); return; } catch (PathTooLongException) { // 路径字符串的长度超过系统定义的最大长度 Console.WriteLine(@"路径字符串的长度超过系统定义的最大长度。"); return; } } static public void GetExtension() // 获得文件扩展名 { Console.WriteLine(@"请输入文件名(包含路径):"); string fileName = Console.ReadLine(); // 获得文件名 string fileExtension = ""; // 储存文件扩展名 try { fileExtension = Path.GetExtension(fileName); // 获得文件扩展名 // 完成 Console.WriteLine(@"操作成功!"); // 输出结果 Console.WriteLine(@"结果为:{0}", fileExtension); } catch (ArgumentException) { // 文件名包含一个或多个不合法的字符 Console.WriteLine(@"文件名包含一个或多个不合法的字符。"); return; } } static public void GetFileName() // 获得路径最后一个目录字符后面的字符串 { Console.WriteLine(@"请输入路径字符串:"); string pathName = Console.ReadLine(); // 获取路径字符串 string fileName = ""; // 储存文件名 try { fileName = Path.GetFileName(pathName); // 获得文件名 // 完成 Console.WriteLine(@"操作成功!"); // 输出结果 Console.WriteLine(@"结果为:{0}", fileName); } catch (ArgumentException) { // 路径字符串包含一个或多个不合法字符 Console.WriteLine(@"路径字符串包含一个或多个不合法字符。"); return; } } static public void GetFileNameWithoutExtension() // 获得不包含扩展名的文件名 { Console.WriteLine(@"请输入文件名:"); string fileName = Console.ReadLine(); // 获得全文件名 string fileNameWithoutExtension = ""; // 储存文件名 try { // 获得文件名 fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileName); // 完成 Console.WriteLine(@"操作成功!"); // 输出结果 Console.WriteLine(@"结果为:{0}", fileNameWithoutExtension); } catch (ArgumentException) { // 文件名(路径)包含一个或多个不合法字符 Console.WriteLine(@"文件名(路径)包含一个或多个不合法字符。"); return; } } static public void GetFullPath() // 获得路径/文件的绝对路径 { Console.WriteLine(@"请输入相对路径:"); string relativePath = Console.ReadLine(); // 获得相对路径 string absolutePath = ""; // 储存绝对路径 try { absolutePath = Path.GetFullPath(relativePath); // 获得绝对路径 // 完成 Console.WriteLine(@"操作成功!"); // 输出结果 Console.WriteLine(@"结果为:{0}", absolutePath); } catch (ArgumentNullException) { // 相对路径为空 Console.WriteLine(@"相对路径为空。"); return; } catch (ArgumentException) { // 相对路径中包含一个或多个不合法的字符 Console.WriteLine(@"相对路径中包含一个或多个不合法的字符。"); return; } catch (SecurityException) { // 没有权限执行该操作 Console.WriteLine(@"没有权限执行该操作。"); return; } catch (NotSupportedException) { // 相对路径中包含冒号 Console.WriteLine(@"相对路径中包含冒号。"); return; } catch (PathTooLongException) { // 指定的路径、文件名或者两者都超出了系统定义的最大长度 Console.WriteLine(@"指定的路径、文件名或者两者都超出了系统定义的最大长度。"); return; } } static public void GetInvalidFileNameChars() // 获得不合法的文件名字符 { Console.WriteLine(@"不合法的文件名字符:"); char[] charArray = Path.GetInvalidFileNameChars(); // 获得不合法的文件名字符数组 // 输出结果 foreach (char invalidChar in charArray) { Console.WriteLine(invalidChar); } // 完成 Console.WriteLine(@"操作完成!"); } static public void GetInvalidPathChars() // 获得不合法的路径字符 { Console.WriteLine(@"不合法的路径字符:"); char[] charArray = Path.GetInvalidPathChars(); // 获得不合法的路径字符数组 // 输出结果 foreach (char invalidChar in charArray) { Console.WriteLine(invalidChar); } // 完成 Console.WriteLine(@"操作完成!"); } static public void GetRootPath() // 获得指定路径的根目录信息 { Console.WriteLine(@"请输入指定的路径字符串:"); string pathString = Console.ReadLine(); // 获得指定的路径字符串 string rootString = ""; // 储存根目录信息 try { rootString = Path.GetPathRoot(pathString); // 获得根目录信息 // 完成 Console.WriteLine(@"操作完成!"); // 输出结果 Console.WriteLine(@"结果为:{0}", rootString); } catch (ArgumentException) { // 指定路径字符串中包含一个或多个不合法的字符,或传递的字符串为空 Console.WriteLine(@"指定路径字符串中包含一个或多个不合法的字符,或传递的字符串为空。"); return; } } static public void GetRandomFileName() // 获得强随机文件(夹)名称 { string fileName = Path.GetRandomFileName(); // 获得强随机文件(夹)名称 Console.WriteLine(@"操作完成!"); // 完成 // 输出结果 Console.WriteLine(@"获得的随机文件(夹)名称为:{0}", fileName); } static public void GetTempFileName() // 创建临时文件 { string fileName = ""; // 储存创建临时文件的路径及名称 try { // 创建临时文件 fileName = Path.GetTempFileName(); // 完成 Console.WriteLine(@"操作完成!"); // 输出结果 Console.WriteLine(@"生成的临时文件为:{0}", fileName); } catch (IOException) { // 发生 I/O 错误,例如没有提供唯一的临时文件名 // - 或 - // 此方法无法创建临时文件 Console.WriteLine(@"无法创建临时文件。"); return; } } static public void GetTempPath() // 返回系统当前的临时文件夹路径 { string tempPath = ""; // 储存系统当前临时文件夹路径 try { tempPath = Path.GetTempPath(); // 获得系统当前临时文件夹路径 // 完成 Console.WriteLine(@"操作完成!"); // 输出结果 Console.WriteLine(@"系统当前的临时文件夹路径为:{0}", tempPath); } catch (SecurityException) { // 没有进行此操作的权限 Console.WriteLine(@"没有进行此项操作的权限!"); return; } } static public void HasExtension() // 判断路径字符串是否包含扩展名 { Console.WriteLine(@"请输入指定的路径字符串:"); string pathString = Console.ReadLine(); // 获得指定的路径字符串 string hasExtension = ""; // 储存结果 try { hasExtension = Path.HasExtension(pathString) ? @"有" : @"无"; // 执行判断 // 完成 Console.WriteLine(@"操作完成!"); // 输出结果 Console.WriteLine(@"结果为:{0}", hasExtension); } catch (ArgumentException) { // 指定的路径字符串中包含一个或多个非法字符 Console.WriteLine(@"指定的路径字符串中包含一个或多个非法字符。"); return; } } static public void IsPathRooted() // 判断路径字符产包含绝对路径还是相对路径 { Console.WriteLine(@"请输入指定的路径字符串:"); string pathString = Console.ReadLine(); // 获得指定的路径字符串 string isRooted = @""; // 储存结果 try { isRooted = Path.IsPathRooted(pathString) ? @"绝对路径" : @"相对路径"; // 执行判断 // 完成 Console.WriteLine(@"操作完成!"); // 输出结果 Console.WriteLine(@"结果为:{0}", isRooted); } catch (ArgumentException) { // 指定的路径字符串中包含一个或多个非法字符 Console.WriteLine(@"指定的路径字符串中包含一个或多个非法字符。"); return; } } static private void ShowMenu() { Console.WriteLine(@"========================================"); Console.WriteLine(@"操作菜单"); Console.WriteLine(@"========================================"); Console.WriteLine(@"[A].Path.ChangeExtension"); Console.WriteLine(@"[B].Path.Combine"); Console.WriteLine(@"[C].Path.GetDirectoryName"); Console.WriteLine(@"[D].Path.GetExtension"); Console.WriteLine(@"[E].Path.GetFileName"); Console.WriteLine(@"[F].Path.GetFileNameWithoutExtension"); Console.WriteLine(@"[G].Path.GetFullPath"); Console.WriteLine(@"[H].Path.GetInvalidFileNameChars"); Console.WriteLine(@"[I].Path.GetInvalidPathChars"); Console.WriteLine(@"[J].Path.GetRandomFileName"); Console.WriteLine(@"[K].Path.GetPathRoot"); Console.WriteLine(@"[L].Path.GetTempFileName"); Console.WriteLine(@"[M].Path.GetTempPath"); Console.WriteLine(@"[N].Path.HasExtension"); Console.WriteLine(@"[O].Path.IsPathRooted"); Console.WriteLine(@"[Q].退出"); Console.WriteLine(@"========================================"); } } } |