302Soft—302软件技术联盟

ASP.NET / C# / PowerBuilder 技术交流
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

常用的文件操作方法-代码示例

Posted on 2007-01-20 20:39  寒夜听雨  阅读(3069)  评论(0编辑  收藏  举报

 

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

Copyright(C) 2004-2007 302Soft-寒夜听雨 版权所有