在程序中对文件操作是非常常见的,而对文件的操作则不可避免的需要文件的路径,并对文件的路径进行一系列的操作,例如:判断已知的路径是一个目录还是一个文件,路劲是一个文件则该文件的名称是什么,文件的扩展名名是什么等等。在c#中并并没有将文件的路径抽象为一个类,用来表示文件路径就是一个普通的字符串。对文件路径的操作例如,要获取文件名称,可以通过截取字符串或者使用正则表达式来取得。
其实,在.net类库中,有一个专门的功能类system.io.path,对表示文件或在目录路径的string进行操作。下面介绍下利用path来对文件路径进行的一些诶常用操作。
判断给出的路径或者文件名是否合法
path.getinvalidfilenamechars() 该方法返回一个char[] 指出不能在文件名中出现的字符。
/// <summary> /// 判断文件名是否合法 /// </summary> /// <param name="filename">文件名</param> /// <returns>ture,合法;false,非法</returns> 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 ; }
假如文件名称是非法的,可以利用下面的方法,移除非法字符
/// <summary> /// 除掉文件名中的非法字符 /// </summary> /// <param name="filename"></param> /// <returns>合法的文件名</returns> 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其它的一些功能函数
获取和应用程序相关的路径
环境变量相关
使用system.environment.getenvironmentvariable()能够获取和环境变量相关的文件路径,例如:
自然,使用system.environment.setenvironmentvariable() 能够设置环境变量
如对本文有疑问, 点击进行留言回复!!
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析
网友评论