常用的文件操作方法(1)——配套事例代码

常用的文件操作方法(1)——配套事例代码

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(@"========================================");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值