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. persistencejs:异步javascript数据库映射库

    persistence.js 是一个异步的 JavaScript 对象数据库映射(ORM)框架.拥有数据库无关的独立抽象层,可轻松支持新的数据库.该软件最开始是为浏览器设计的,利用 HTML5 的 W ...

  2. mybatis递归,一对多代码示例

    今天需要做一个功能,根据专业,有不同的章节,章节下面有对应的习题, 由于只有这么两级,可以不用使用递归,直接查询父集,之后foreach查询子集放入对应的list集合. 虽然实现了,感觉毕竟,太low ...

  3. MYSQL注入天书之前言

    写在前面的一些内容 请允许我叨叨一顿: 最初看到sqli-labs也是好几年之前了,那时候玩了前面的几个关卡,就没有继续下去了.最近因某个需求想起了sqli-labs,所以翻出来玩了下.从每一关卡的娱 ...

  4. Am335x U-boot LCD简易驱动

    参考此文档说明,自行添加相关代码: https://pan.baidu.com/s/1i5gLE89 相关代码: https://pan.baidu.com/s/1qXL8Bne 在文档说明第四步1中 ...

  5. Python开发基础-Day29多线程

    概念 进程:进程就是一个程序在一个数据集上的一次动态执行过程 程序:代码 数据集:程序执行过程中需要的资源 进程控制块:完成状态保存的单元 线程:线程是寄托在进程之上,为了提高系统的并发性 线程是进程 ...

  6. urllib2 调用salt restapi

    1获取token #_*_coding:utf8_*_ import urllib2 import json def get_token(): url='http://10.20.32.86:8000 ...

  7. 克鲁斯卡尔(并查集)hdu 1233

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  8. HDU 1325(并查集)

    Is It A Tree? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  9. 【codeforces.com/gym/100240 J】

    http://codeforces.com/gym/100240 J [分析] 这题我搞了好久才搞出样例的11.76....[期望没学好 然后好不容易弄成分数形式.然后我‘+’没打..[于是爆0... ...

  10. PHP多个版本爆出远程DOS漏洞

    近日,php多个版本爆出远程DoS漏洞(官方编号69364),利用该漏洞构造poc发起链接,很容易导致目标主机cpu的100%占用率,绿盟科技威胁响应中心随即启动应急机制, 启动应急响应工作,总结PH ...