用法:

1.Server.MapPath ("/") 应用程序根目录所在的位置 如 C:\Inetpub\wwwroot\

2.Server.MapPath ("./") 表示所在页面的当前目录

注:等价于Server.MapPath ("") 返回 Server.MapPath ("")所在页面的物理文件路径

3.Server.MapPath ("../")表示上一级目录

4.Server.MapPath ("~/")表示当前应用级程序的目录,如果是根目录,就是根目录,如果是虚拟目录,就是虚拟目录所在的位置

如:C:\Inetpub\wwwroot\Example\ 注:等效于Server.MapPath ("~")。

但是, 有些时候, 我们需要获取根目录以上的路径, 这时候该肿么办?

下面 提出两种解决方案。

第一种是

C#的path.GetFullPath 获取上级目录实现方法

string path = new directoryinfo("../").fullname;//当前应用程序路径的上级目录

using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.io;
namespace pathtest
{
class program
{
static void main(string[] args)
{
//使用appdomain获取当前应用程序集的执行目录
string dir = appdomain.currentdomain.basedirectory;
string info = string.format("appdomain方法获取当前程序集目录:{0}", dir);
console.writeline(info);
//使用path获取当前应用程序集的执行的上级目录
dir = path.getfullpath("..");
info = string.format("path方法获取当前程序集上级目录:{0}", dir); (www.jb51.net)
console.writeline(info);
//使用path获取当前应用程序集的执行目录的上级的上级目录
dir = path.getfullpath(@"....");
info = string.format("path方法获取当前程序集目录的级的上级目录:{0}", dir);
console.writeline(info);
//使用path获取当前应用程序集的执行目录的上级目录
dir = path.getfullpath(@"......");
info = string.format("path方法获取当前程序集目录的上级目录的上级目录:{0}", dir);
console.writeline(info);
//在当前程序集目录中添加指定目录
dir = path.getfullpath(@"io");
info = string.format("在当前程序集目录中添加指定目录:{0}", dir);
console.writeline(info);
console.read();
}
}
}

这种情况, 不是常有效, 肿么办呢? 我们可以采取灵活一点的办法, 下面介绍灵活一点的办法。

不仅仅可以针对上级目录的问题, 还可以灵活的处理许多类似的问题,  多谢一位前辈对我的指点~

第二种做法的思路是这样:

首先获取应用程序的根目录,

string root = System.Web.HttpContext.Current.Server.MapPath("~/");

再用数组,把 "\\" 作为分隔符, 区别开来
string[] temp = root.Split("\\".ToCharArray());

遍历得到的数组
for (int i = 0; i < temp.Length - 2; i++)
{
a += temp[i];
a += "\\";
}

比如获取上一级, 就把 length -2 , 就可以获得上一级的目录

上上级, 就继续 减掉 2个, 以此类推。

C# 如何获取当前应用程序的上一级路径的更多相关文章

  1. python 获取当前,上级,上上级路径

    import os print '***获取当前目录***' print os.getcwd() print os.path.abspath(os.path.dirname(__file__)) pr ...

  2. 小程序返回上一级页面背景音乐报错 setBackgroundAudioState:fail title is nil!;

    小程序初始化在onLoad的时候加载了一次背景音乐. 如果此时报错是title必传.如果没有 会报错一次 setBackgroundAudioState:fail title is nil!; 这个都 ...

  3. c#获取当前运行程序所在的目录

    C#获取项目程序及运行路径的方 1.asp.net webform用“Request.PhysicalApplicationPath获取站点所在虚拟目录的物理路径,最后包含“\”:   2.c# wi ...

  4. c#获取当前应用程序所在路径

    一.获取当前文件的路径1.   System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName     获取模块的完整路径,包括文 ...

  5. C++ 一个程序获取另一个程序Edit控件的内容

    //一个程序获取另一个程序Edit控件的内容 //根据指定程序的标题名获取改程序窗口的句柄 HWND hWnd=::FindWindow(NULL,"zhang001"); if( ...

  6. Java之Property-统获取一个应用程序运行的次数

    package FileDemo; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStre ...

  7. MVC应用程序显示上传的图片

    MVC应用程序显示上传的图片 前两篇<MVC应用程序实现上传文件>http://www.cnblogs.com/insus/p/3590907.html和<MVC应用程序实现上传文件 ...

  8. ASP.NET获取web应用程序的路径

    服务器磁盘上的物理路径: HttPRuntime.AppDomainAppPath虚拟程序路径: HttpRuntime.AppDomainAppVirtualPath 任何于Request/Http ...

  9. 使用api获取数据————小程序

    使用api获取数据----小程序 onLoad: function (options) { //打开页面即执行. let that = this; wx.request({ //建立链接 url: ' ...

随机推荐

  1. for循环

    1.使用for循环输出矩形 public static void print1(int h,int w){        for(int i=0; i<h; i++){            f ...

  2. Learn JavaScript(面向对象的程序设计01)

    最新更新请访问: http://denghejun.github.io JavaScript与OOP   JavaScript作为web前端一种重要的脚本技术,已被大多开发人员所熟知.compare ...

  3. 八月25日认识java

    java的起源:1991年SUN公司启动的“Green”项目制作出的Star7, java的发展:于1995年5月23日正NSU式发布第一个java开发工具:java在1998年推出JDK1.2,表示 ...

  4. vb6保存项目到c盘的安装目录

    工程保存在安装目录("C:\Program Files (x86)\Microsoft Visual Studio\VB98\errhandler1.vbp")里. 文件管理器找不 ...

  5. linux kernel链表

    参考: http://blog.csdn.net/echoisland/article/details/7079943

  6. myBatis的一对多查询,主要利用resultMap实现一次查询多个结果集

    日常开发中有这中场景,一个用户有多个角色,一个角色又有多个菜单,想查出一个用户的所有菜单.除了常见的关联查询之外,更使用的应该是利用myBatis的resultMap来实现一次查询出多个结果集,缺点: ...

  7. 好程序与差程序Good Programming, Bad Programming

    好程序与差程序 Good Programming, Bad Programming 发布时间: 2012-11-20 16:32:21| 阅读数:2,735 views 优秀的程序可以使复杂的东西看起 ...

  8. wordpress 分类相关

    分类类型,层级 wp中的分类.文章类型(post,page,video,image).标签.自定义分类.自定义标签都是分类形式.有些分类是有层级关系,有些没有.如图: taxonomy分类(categ ...

  9. 带你玩转JavaWeb开发之六-mysql基本语法详解及实例(2)

    1.1.1    对数据库中表的记录进行操作(*****) 1.1.1.1   对数据库中表记录插入操作 [语法] 向数据库表中插入某些列:insert into 表名 (列名1,列名2,列名3-) ...

  10. iOS常见算法(二分法 冒泡 选择 快排)

    二分法: 平均时间复杂度:O(log2n) int halfFuntion(int a[], int length, int number)  { int start = 0; int end = l ...