C#最常使用的相对路径是从当前程序所在路径开始相对寻径,找到要找的路径,即以下两种最简单的方式:

  1. 程序根目录.(即exe程序所在路径)

//下面两个路径是等价的,都是exe程序所在路径(通常是bin\Debug\下)的Data文件夹下的test文本文件
string Path1 = @".\Data\test.txt";
string Path2 = @"Data\test.txt";

  2. 上级目录..

string Path3 = @"..\Data\test.txt";    //程序根目录的上级目录(通常是bin\下)的Data文件夹下的test文本文件
string Path4 = @"..\..\Data\test.txt";  //程序根目录的上两级目录(通常是程序名\下)的Data文件夹下的test文本文件

  当然,C#还可以靠指定的方式获得相对路径。应用VS2010创建了一WinForm项目,项目名为RelativePath,放在桌面上。编写代码通过八种特定方式获取相对路径并输出显示,运行效果如下:

  下面简要的介绍一下这八种获得相对路径的方式:

  1. 获取和设置当前目录(该进程从中启动的目录)的完全限定路径

string str1 = System.Environment.CurrentDirectory;    //Result: C:xxxxxx

  2. 获取应用程序的当前工作目录

string str2 = System.IO.Directory.GetCurrentDirectory();    //Result: C:xxxxxx

  这个不一定是程序从中启动的目录啊,有可能程序放在C:\xxx里,这个函数有可能返回C:\Documents and Settings\WSY\,或者C:\Program Files\Adobe\,有时不一定返回什么东西,这是程序最后一次操作过的目录,比如你用Word打开了E:\doc\my.doc这个文件,此时执行这个方法就返回了E:\doc了。

  3. 获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称

string str3 = System.Windows.Forms.Application.StartupPath;    //Result: C:xxxxxx

  4. 获取启动了应用程序的可执行文件的路径,包括可执行文件的名称

string str4 = System.Windows.Forms.Application.ExecutablePath;    //Result: C:xxxxxxxxx.EXE

  5. 获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集

string str5 = System.AppDomain.CurrentDomain.BaseDirectory;  //Result: C:xxxxxx

  6. 获取和设置包含该应用程序的目录的名称

string str6 = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;    //Result: C:xxxxxx

  7. 获取当前进程的完整路径,包含文件名

string str7 = this.GetType().Assembly.Location;    //Result: C:xxxxxxxxx.exe

  8. 获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名

string str8 = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;    //Result: C:xxxxxxxxx.vshost.exe

  此外,更多见的通过XML文件配置具体的路径来达到合理的规划配置文件的具体存放位置,如WEB中的配置文件中的路径

string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"moduleM3ExampleMuColor.txt";
StreamReader smRead = new StreamReader(path, System.Text.Encoding.Default);  //设置路径

C#获取相对路径的更多相关文章

  1. C# 获取文件路径

    1.C# 获取文件路径:http://www.cnblogs.com/bq-blog/archive/2012/09/01/2666394.html

  2. JAVA获取服务器路径的方法

    1.在JSF环境中获取到ServletContext: 1 2 ServletContext sc = (ServletContext)FacesContext.         getCurrent ...

  3. java代码中获取classpath路径

    Javaweb工程中,有时候需要自己手动的去读取classpath下面的配置文件,这里总结一点读取classpath路径的方法,分享一下. 方法一: String path = Test.class. ...

  4. 通过PID获取进程路径的几种方法

    通过PID获取进程路径的几种方法 想获得进程可执行文件的路径最常用的方法是通过GetModuleFileNameEx函数获得可执行文件的模块路径这个函数从Windows NT 4.0开始到现在的Vis ...

  5. WPF 获取程序路径的一些方法,根据程序路径获取程序集信息

    一.WPF 获取程序路径的一些方法方式一 应用程序域 //获取基目录即当前工作目录 string str_1 = System.AppDomain.CurrentDomain.BaseDirector ...

  6. CMD魔法堂:获取进程路径和PID值的方法集

    一.前言    在开发发布更更新工具——更新Weblogic应用模块时,了解到更新Weblogic应用需要先关闭Weblogic应用窗口然后是清缓存.更新应用文件,最后再重启Weblogic应用窗口. ...

  7. java获取tomcat路径

    获取tomcat路径 String savePath3 = System.getProperty("catalina.home"); E:\apache-tomcat-7.0.63 ...

  8. PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能

    PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能 网上很多正则表达式只能获取或者替换一个img的src内容,或者只能替换固定的字符串,要动态替换多个图片内容的试了几个小时 ...

  9. request 获取各种路径

    从request获取各种路径总结 request.getRealPath("url"); // 虚拟目录映射为实际目录 request.getRealPath("./&q ...

  10. C#获取相对路径的方法

    这八种C#获取相对路径的方法,包括获取和设置当前目录的完全限定路径.获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称等等内容. C#获取相对路径1. 获取和设置当前目录的完全限定路径.   ...

随机推荐

  1. 破解 crackme4(深入底层抓出关键算法)

    系统 : Windows xp 程序 : crackme4 程序下载地址 :http://pan.baidu.com/s/1nu452xN 要求 : 注册机编写 使用工具 : OD & IDA ...

  2. Magento架构师的笔记-----Magento显示当前目录的父分类和子分类的分类名

    在Magento目录的分类页面里,希望在左侧导航获取到父分类和子分类,可以用以下方法:打开app/your_package/your_themes/template/catalog/navigatio ...

  3. 第一个Sprint冲刺第七天

    讨论成员:邵家文.李新.朱浩龙.陈俊金 讨论问题:怎样添加功能 讨论地点:宿舍 遇到问题:编写代码的思路不完整,很混乱 工作进度: 队员工作照:

  4. 第一个demo

    1.首先这是最初的概念模型. 2.最后设计成这样. 3.运行

  5. python的 map,filter, reduce, enumerate

    一, map     #基本的map运用都可以用解析去替代,复杂的仍然需要定义函数,利用map去做 map(函数, 序列) 将序列的各项经过函数处理, 然后返回到一个新列表中. #itertools. ...

  6. git不能提交jar的设置

      项目目录下 文件:.gitignore ,里面设置: *.class # Package Files # *.jar *.war *.ear 删除*.jar

  7. AngularJS的路由、模块、依赖注入

    AngularJS的路由在实际应用中更多是由另外封装好的angular-ui-router.js实现的! 为什么不用Ajax而要用前端路由?

  8. 153. Find Minimum in Rotated Sorted Array

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...

  9. objective-c new关键字

    xxx *a = [xxx new] 等价于 xxx *a = [[xxx alloc]init] ,但如果类的构造函数带参数就不能使用new了. 练习了下<Objective-C 基础教程&g ...

  10. 论文笔记之:Learning to Track: Online Multi-Object Tracking by Decision Making

    Learning to Track: Online Multi-Object Tracking by Decision Making ICCV   2015 本文主要是研究多目标跟踪,而 online ...