浅析C#中文件路径的操作

在程序中对文件操作是非常常见的,而对文件的操作则不可避免的需要文件的路径,并对文件的路径进行一系列的操作,例如:判断已知的路径是一个目录还是一个文件,路劲是一个文件则该文件的名称是什么,文件的扩展名名是什么等等。在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  http://msdn.microsoft.com/zh-cn/library/system.io.path_methods.aspx

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() 能够设置环境变量

(0)

相关推荐

  • C#文件路径操作详细总结

    一.获取当前文件的路径1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName获取模块的完整路径,包括文件名. 2. System.Environment.CurrentDirectory获取和设置当前目录(该进程从中启动的目录)的完全限定目录. 3. System.IO.Directory.GetCurrentDirectory() 获取应用程序的当前工作目录.这个不一定是程序从中启动的目录啊,有可能程序放在C:

  • C#中的文件路径获取函数和文件名字获取函数小结

    1. 获取绝对文件路径 复制代码 代码如下: System.IO.Path.GetFullPath(string path) string fileName = "myfile.ext"; string path1 = @"mydir"; string path2 = @"\mydir"; string fullPath; fullPath = Path.GetFullPath(path1); fullPath = Path.GetFullPat

  • C#中文件名或文件路径非法字符判断方法

    文件路径或者保存模板出现非法字符判断 1)不为空判断 string strTemplateName = txtTemplateName.Text; if (string.IsNullOrWhiteSpace(strTemplateName)) { Show("请输入模板名称!", "提示", .Information, OK); txtTemplateName.Focus(); return; } 2)然后对strTemplateName 进行非法字符判断 if (

  • C#中Winform获取文件路径的方法实例小结

    本文实例讲述了C#中Winform获取文件路径的方法.分享给大家供大家参考.具体如下: 获取文件名方法: 用System.IO.Path.GetFileName和System.IO.Path.GetFileNameWithoutExtension(无扩展名)的方法 获取文件路径方法: //获取当前进程的完整路径,包含文件名(进程名). string str = this.GetType().Assembly.Location; result: X:\xxx\xxx\xxx.exe //(.exe

  • C#判断文件路径是否存在或者判断文件是否存在的方法

    复制代码 代码如下: //判断文件路径是否存在,不存在则创建文件夹 if (!System.IO.Directory.Exists(@"D:\Export")) { System.IO.Directory.CreateDirectory(@"D:\Export");//不存在就创建目录 } //判断文件是否存在 添加引用using System.IO; if(File.Exists(@"文件路径")) { //存在 } else { //不存在

  • 浅析C#中文件路径的操作

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

  • Python IDLE或shell中切换路径的操作

    在Python自带的编辑器IDLE中或者Python shell中不能使用cd命令,那么跳到目标路径呢. 方法是使用os包下的相关函数实现路径切换功能. import os os.getcwd() #获取当前路径 os.chdir("D:\\test") #跳到目标路径下 os.chdir('D:\\test') #单引号.双引号都可以 补充知识:Python更改IDLE默认保存路径 每次都修改保存路径还挺烦人的. 1 右键IDLE,更多,打开文件位置(开始.搜索IDLE) 2 打开文

  • 详解IOS中文件路径判断是文件还是文件夹

    详解IOS中文件路径判断是文件还是文件夹 方法1 + (BOOL)isDirectory:(NSString *)filePath { BOOL isDirectory = NO; [[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:&isDirectory]; return isDirectory; } 方法2 + (BOOL)isDirectory:(NSString *)filePath { NSNum

  • Python的shutil模块中文件的复制操作函数详解

    copy() chutil.copy(source, destination) shutil.copy() 函数实现文件复制功能,将 source 文件复制到 destination 文件夹中,两个参数都是字符串格式.如果 destination 是一个文件名称,那么它会被用来当作复制后的文件名称,即等于 复制 + 重命名.举例如下: >> import shutil >> import os >> os.chdir('C:\\') >> shutil.co

  • 易语言取文件路径的操作教程

    易语言开发环境的"横空出世",给沉寂已久的"编程江湖"带来了巨大反响.越来越多的编程爱好者加入了易语言编程的大潮中.在易语言编程中,我们可能会遇到很多问题.比如,易语言如何取文件路径,其实这个方法有多种,给大家讲解其中一种. 1.首先,准备好测试文件(文件随意),这里不强求使用某个文件,只是为了配合此次测试而已.这里,笔者就以一个txt文本文档为例吧. 2.然后,运行"易语言"主程序,在弹出的"新建工程"文件对话框中,选择&q

  • python文件名和文件路径操作实例

    Readme: 在日常工作中,我们常常涉及到有关文件名和文件路径的操作,在python里的os标准模块为我们提供了文件操作的各类函数,本文将分别介绍"获得当前路径""获得当前路径下的所有文件和文件夹,"删除文件","删除目录/多个目录","检查文件/文件路径","检查文件路径是否存在","分离文件路径及文件名","分离文件扩展名","得到文件名&q

  • python文件路径操作方法总结

    在python中,文件使用十分频繁,本文将向大家介绍python文件路径的操作:得到指定文件路径.得到当前文件名.判断文件路径是否存在.获得指定文件夹下所有文件.获得文件后缀.拼接路径和文件名. 1.得到指定文件路径:os.path.dirname(带路径文件名) 查找处理文件要调用os库,和openpyxl一样,先用import 导入. import os file = r'e:\python\删除最小值.xlsx' pwd = os.path.dirname(file) print(pwd)

  • python中os操作文件及文件路径实例汇总

    本文实例讲述了python中os操作文件及文件路径的方法.分享给大家供大家参考.具体分析如下: python获取文件上一级目录:取文件所在目录的上一级目录 复制代码 代码如下: os.path.abspath(os.path.join(os.path.dirname('settings.py'),os.path.pardir)) os.path.pardir是父目录,os.path.abspath是绝对路径 举例具体看一下输出: 复制代码 代码如下: print os.path.dirname(

  • Python中文件I/O高效操作处理的技巧分享

    如何读写文本文件? 实际案例 某文本文件编码格式已直(如UTF-8,GBK,BIG5),在python2.x和python3.x中分别如何读取这些文件? 解决方案 字符串的语义发生了变化: python2 python3 str bytes unicode str python2.x 写入文件前对 unicode 编码,读入文件后对二进制字符串解码 >>> f = open('py2.txt', 'w') >>> s = u'你好' >>> f.wri

  • PHP中文件读、写、删的操作(PHP中对文件和目录操作)

    一:目录操作 首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出: 复制代码 代码如下: <?php $base_dir = "filelist/"; $fso = opendir($base_dir); echo $base_dir."<hr/>" ; while($flist=readdir($fso)){ echo $flist."<br/&

随机推荐