博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 中文件路径的操作
阅读量:5357 次
发布时间:2019-06-15

本文共 3257 字,大约阅读时间需要 10 分钟。

在程序中对文件操作是非常常见的,而对文件的操作则不可避免的需要文件的路径,并对文件的路径进行一系列的操作,例如:判断已知的路径是一个目录还是一个文件,路劲是一个文件则该文件的名称是什么,文件的扩展名名是什么等等。在C#中并并没有将文件的路径抽象为一个类,用来表示文件路径就是一个普通的字符串。对文件路径的操作例如,要获取文件名称,可以通过截取字符串或者使用正则表达式来取得。

其实,在.NET类库中,有一个专门的功能类System.IO.Path,对表示文件或在目录路径的string进行操作。下面介绍下利用Path来对文件路径进行的一些诶常用操作。

  • 判断给出的路径或者文件名是否合法
    Path.GetInvalidFileNameChars() 该方法返回一个char[] 指出不能在文件名中出现的字符。
    ///         /// 判断文件名是否合法        ///         /// 文件名        /// 
    ture,合法;false,非法
    public bool validFileName(string fileName) { if(!string.IsNullOrEmpty(fileName)) { char [] errChars = Path.GetInvalidFileNameChars() ; foreach(char ch in errChars) { if(fileName.Contains(ch.ToString())) return false ; } } else { return false ; } return true ; }

假如文件名称是非法的,可以利用下面的方法,移除非法字符

///         /// 除掉文件名中的非法字符        ///         ///         /// 
合法的文件名
public string fixedFileName(string fileName) { char[] errChars = Path.GetInvalidFileNameChars(); StringBuilder fileNameBuilder = new StringBuilder(fileName) ; foreach(char ch in errChars) { fileNameBuilder.Replace(ch.ToString(),string.Empty); } return fileNameBuilder.ToString(); }

同理使用Path.GetInvalidPathChars()来获取不能在目录路径中出现的字符,来判断给出的目录路径是否合法,并且对非法的目录路径进行修改。

  • 判断给出的路径是目录路径还是文件路径
    如果能够确定给出的路径是已经存在的,那么可以使用Directory.Exists()和File.Exists()来判断路径是目录还是文件。不能确定给定的路径存在,可以使用Path.GetFileName()获取路径中的文件名,如能取到文件名显然路径是一个文件路径,如不能则是路径。说明,目录路径的最后一个字符应该是以’\’来结束。
  • 合并路径
    有些路径的不同部分是从不同的地方取得,这是需要将这些部分进行组合,形成一个完整的路径。在组合的过程中不可避免的要涉及到对”\”的处理,这时可以使用Path.Combine()把路径的不同部分组合到一起。Path.Combine()有多种形式的重载,满足不同的需求。需要说明的是,在用Path.Combine()不接受不合法的文件名或者路径名,并且在合并时,如果某一个部分是从绝对路径开始的,则合并操作重置为从该绝对路径开始,舍弃前面的已经合并的路径。例如:
    string[] paths = {
    @"d:\archives", "2001", "e:\\", "images"}; string fullPath = Path.Combine(paths); //fullPath 为 e:\images Console.WriteLine(fullPath);
    fullPath为e:\images
  • 获取路径的特定部分,如:文件名,扩展名,文件目录等

                Path.GetFileName(path);//获取文件名

                Path.GetFileNameWithoutExtension(path); //获取文件名,不带扩展名
                Path.GetExtension(path) ; //获取文件扩展名
                Path.GetDirectoryName(path) ; //获取文件目录
                Path.GetPathRoot(path) ;//获取根目录信息

    更具体的可以参看MSDN 

  • Path其它的一些功能函数
    Path.GetRandomFileName() 获取一个随机的文件名或者目录名
    Path.GetTempFileName() 创建磁盘上唯一命名的零字节的一个临时文件并返回该文件的完整路径
    Path.GetTempPath() 获取当前用户的临时目录路径
    Path.HasExtension() 确定路径是否包含文件扩展名
  • 获取和应用程序相关的路径
    System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName 获取模块的完整路径,包括文件名。
    System.Environment.CurrentDirectory 获取或设置应用程序当前工作目录的完全限定路径
    System.IO.Directory.GetCurrentDirectory() 获取或设置应用程序的当前工作目录,不一定是应用程序的启动目录,是应用程序最后一次操作过的目录。
  • 环境变量相关
    使用System.Environment.GetEnvironmentVariable()能够获取和环境变量相关的文件路径,例如:
    System.Environment.GetEnvironmentVariable("windir") 获取操作系统所在的目录
    System.Environment.GetEnvironmentVariable("INCLUDE") 获取头文件所在的目录
    System.Environment.GetEnvironmentVariable("TMP") 获取临时目录
    System.Environment.GetEnvironmentVariable("Path") 获取Path环境变量所包含的文件目录
    自然,使用System.Environment.SetEnvironmentVariable() 能够设置环境变量

转载于:https://www.cnblogs.com/wangguchangqing/archive/2013/04/02/2992660.html

你可能感兴趣的文章
洛谷 P1991 无线通讯网
查看>>
Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf 【动态规划】0-1背包
查看>>
SparkStreaming 源码分析
查看>>
【算法】—— 随机音乐的播放算法
查看>>
mysql asyn 示例
查看>>
数据库第1,2,3范式学习
查看>>
《Linux内核设计与实现》第四章学习笔记
查看>>
使用iperf测试网络性能
查看>>
图片的显示隐藏(两张图片,默认的时候显示第一张,点击的时候显示另一张)...
查看>>
Docker 安装MySQL5.7(三)
查看>>
python 模块 来了 (调包侠 修炼手册一)
查看>>
关于CSS的使用方式
查看>>
分析语句执行步骤并对排出耗时比较多的语句
查看>>
原生JS轮播-各种效果的极简实现
查看>>
计数器方法使用?
查看>>
带你全面了解高级 Java 面试中需要掌握的 JVM 知识点
查看>>
sonar结合jenkins
查看>>
解决VS+QT无法生成moc文件的问题
查看>>
AngularJs练习Demo14自定义服务
查看>>
关于空想X
查看>>