【4858.com】中间获取应用程序的当前路线,获取当前路线方法

By admin in 4858.com on 2019年4月14日

在C#在这之中获得应用程序的近期路线

System.Environment.CurrentDirectory
System.IO.Directory.GetCurrentDirectory()
那三个方式赢得的门路是相同的,拿到的是时下路线,这么些路子不自然是先后所在的路线。任何会转移近来路线的措施都会改变它,例如:OpenFileDialog每换二回目录就会变动它。因而,用那1个章程获得程序路径并不保证。

C# 获取当前路线方法

        //获取包括清单的已加载文件的不二等秘书诀或
UNC 地点。

Environment.CurrentDirectory
System.IO.Directory.GetCurrentDirectory()

文件操作所运用的门道正是以此路子,而真的须求使用的路子是依照程序运营地点的成形而变化的.所以应该取得的是:
System.Windows.Forms.Application.StartupPath;获取运转应用程序的可执行文件的路径,不包罗可执行文件的名称.然后在依照那么些途径做文件操作,就没难题了.
以下是转发的原来的小说:

 

        public static string
sApplicationPath = Assembly.GetExecutingAssembly ( ).Location;

——上面三种获得的是眼下路线,那么些路子不自然是程序所在的门道。任何会改变如今路线的诀要都会改变它,例如:OpenFileDialog每换三遍目录就会转移它。由此,用那1个格局赢得程序路径并不可相信。

C#赢得程序路径的方法中需求注意的地点
版本1
取得运维程序路径的主意首要有以下八种:

//获取包涵清单的已加载文件的门径或 UNC 地点。

        //result: X:\xxx\xxx\xxx.dll
(.dll文件所在的目录+.dll文件名)

AppDomain.CurrentDomain.BaseDirectory

System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
他收获的是Module的文件名,借使在VS二〇〇八的调试环境中,获取的是
[程序名].vshost.exe的欧洲经济共同体文件名。
System.Environment.CurrentDirectory
System.IO.Directory.GetCurrentDirectory()
那八个格局得到的路子是同等的,获得的是现阶段路线,这些路子不肯定是程序所在的途径。任何会改变最近路线的方式都会变动它,例如:OpenFileDialog每换3回目录就会转移它。由此,用那3个措施取得程序路径并不可信赖。
System.AppDomain.CurrentDomain.BaseDirectory
System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
那八个办法是牢靠的拿走程序路径的艺术。再次回到的门径最末以”\”结尾。能够便宜的在后边加入其它Path。当然正是未有也能够用Path.Combine来归并路径以博得想要的路径。
System.Windows.Forms.Application.StartupPath
本条方式也是可信的得到程序路径的方法。但是重返的路径最末并不曾”\”结尾。此外因为是Forms命名空间的。因而只要利用WPF依然不要的好。
System.Windows.Forms.Application.ExecutablePath
以此办法获得的是实行顺序的完整文件名。是最保证的法子,只必要去掉程序文件名就足以获取路径。
版本2:

        public static string sApplicationPath =
Assembly.GetExecutingAssembly ( ).Location;

       
//获取当前历程的欧洲经济共同体路径,包蕴文件名(进程名)。

AppDomain.CurrentDomain.SetupInformation.ApplicationBase
——那七个只可以在WindowForm中央银行使;那五个方法是保障的收获程序路径的秘诀。再次来到的不二等秘书诀最末以”\”结尾。能够一本万利的在前边参预别的Path。当然便是未有也得以用Path.Combine来统一路径以获得想要的途径。

//获取新的 Process
组件并将其与眼下运动的历程关联的主模块的完全路径,包罗文件名(进程名)。
string str =
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)
//获取和安装当前目录(即该进度从中运行的目录)的一点一滴限定路径。
string str = System.Environment.CurrentDirectory;
result: X:\xxx\xxx (.exe文件所在的目录)

        //result: X:\xxx\xxx\xxx.dll (.dll文件所在的目录+.dll文件名)

        string str = this.GetType (
).Assembly.Location;

Application.StartupPath

//获取当前 Thread
的近来使用程序域的基目录,它由程序集冲突消除程序用来探测程序集。
string str = System.AppDomain.CurrentDomain.BaseDirectory;
result: X:\xxx\xxx\ (.exe文件所在的目录+”\”)

 

        //result: X:\xxx\xxx\xxx.exe
(.exe文件所在的目录+.exe文件名)

——那些格局也是不费吹灰之力的收获程序路径的点子。可是重回的路径最末并从未”\”结尾。此外因为是Forms命名空间的。因而若是选用WPF依然不要的好。
Application.ExecutablePath
——这些方法获得的是推行顺序的完全文件名。是最可信赖的办法,只须求去掉程序文件名就足以博得路径。

//获取和安装包罗该应用程序的目录的名目。
string str =
System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
result: X:\xxx\【4858.com】中间获取应用程序的当前路线,获取当前路线方法。xxx\ (.exe文件所在的目录+”\”)

        //获取当前进程的1体化路径,包括文件名(进度名)。

        //获取新的 Process
组件并将其与当前移动的进程关联的主模块的欧洲经济共同体路径,包涵文件名(进程名)。

//获取运转了应用程序的可执行文件的不二等秘书籍,不包括可执行文件的名称。
string str = System.Windows.Forms.Application.StartupPath;
result: X:\xxx\xxx (.exe文件所在的目录)

        string str = this.GetType ( ).Assembly.Location;

        string str =
System.Diagnostics.Process.GetCurrentProcess (
).MainModule.FileName;

//获取运维了应用程序的可执行文件的路线,包蕴可执行文件的称谓。
string str = System.Windows.Forms.Application.ExecutablePath;
result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)

        //result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)

        //result: X:\xxx\xxx\xxx.exe
(.exe文件所在的目录+.exe文件名)

//获取应用程序的当前工作目录(不可信)。
string str = System.IO.Directory.GetCurrentDirectory();

 

       
//获取和安装当前目录(即该进程从中运营的目录)的通通限定路径。

result: X:\xxx\xxx (.exe文件所在的目录)

C#获得本实施顺序所在的此时此刻路线
1.获得和装置当前目录的一点壹滴限定路径。
string str = System.Environment.CurrentDirectory;
Result: C:\xxx\xxx

2.获得运营了应用程序的可执行文件的门径,不包涵可执行文件的称呼。
string str = System.Windows.Forms.Application.StartupPath;
Result: C:\xxx\xxx

③.收获新的 Process
组件并将其与当前移动的进程关联的主模块的全部路径,包蕴文件名。
string str =
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
Result: C:\xxx\xxx\xxx.exe

肆.赢伏贴前 Thread
的当前使用程序域的基目录,它由程序集争辩解决程序用来探测程序集。
string str = System.AppDomain.CurrentDomain.BaseDirectory;
Result: C:\xxx\xxx\

5.取得应用程序的当前工作目录。
string str = System.IO.Directory.GetCurrentDirectory();
Result: C:\xxx\xxx

        //获取新的 Process
组件并将其与日前活动的长河关联的主模块的总体路径,包括文件名(进程名)。

        string str =
System.Environment.CurrentDirectory;

        string str = System.Diagnostics.Process.GetCurrentProcess (
).MainModule.FileName;

        //result: X:\xxx\xxx
(.exe文件所在的目录)

        //result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)

        //获取当前 Thread
的脚下使用程序域的基目录,它由程序集争持消除程序用来探测程序集。

 

        string str =
System.AppDomain.CurrentDomain.BaseDirectory;

        //获取和安装当前目录(即该进度从中运行的目录)的完全限定路径。

        //result: X:\xxx\xxx\
(.exe文件所在的目录+”\”)

        string str = System.Environment.CurrentDirectory;

       
//获取和安装包蕴该应用程序的目录的名目。

        //result: X:\xxx\xxx (.exe文件所在的目录)

        string str =
System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

 

        //result: X:\xxx\xxx\
(.exe文件所在的目录+”\”)

        //获取当前 Thread
的脚下选用程序域的基目录,它由程序集抵触化解程序用来探测程序集。

4858.com ,       
//获取运行了应用程序的可执行文件的路线,不包罗可执行文件的称号。

        string str = System.AppDomain.CurrentDomain.BaseDirectory;

        string str =
System.Windows.Forms.Application.StartupPath;

        //result: X:\xxx\xxx\ (.exe文件所在的目录+”\”)

        //result: X:\xxx\xxx
(.exe文件所在的目录)

 

       
//获取运转了应用程序的可执行文件的路子,包罗可执行文件的名称。

        //获取和装置包罗该应用程序的目录的称呼。

        string str =
System.Windows.Forms.Application.ExecutablePath;

        string str =
System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

        //result: X:\xxx\xxx\xxx.exe
(.exe文件所在的目录+.exe文件名)

        //result: X:\xxx\xxx\ (.exe文件所在的目录+”\”)

       
//获取应用程序的当前工作目录(离谱赖)。

 

        string str =
System.IO.Directory.GetCurrentDirectory ( );

        //获取运转了应用程序的可执行文件的路子,不包涵可执行文件的称呼。

        //result: X:\xxx\xxx
(.exe文件所在的目录)

        string str = System.Windows.Forms.Application.StartupPath;

在系统服务中最佳用这一个主意去取路径

        //result: X:\xxx\xxx (.exe文件所在的目录)

                string stmp =
Assembly.GetExecutingAssembly ( ).Location;

 

                stmp = stmp.Substring ( 0 ,
stmp.LastIndexOf ( ‘\\’ ) );//删除文件名

        //获取运行了应用程序的可执行文件的门道,包蕴可执行文件的名目。

                if ( pathType == 1 )

        string str = System.Windows.Forms.Application.ExecutablePath;

                    return stmp +
@”\inputLog.xml”;

        //result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)

                else if ( pathType == 2
)

 

                    return stmp +
@”\MiddleDB.xml”;

        //获取应用程序的当前工作目录(离谱赖)。

                else

        string str = System.IO.Directory.GetCurrentDirectory ( );

                    return stmp +
@”\AppNo.xml”;

        //result: X:\xxx\xxx (.exe文件所在的目录)

using System.IO;

 

        string path =
“d:asdfasdf.bmp”;

在系统服务中最佳用这几个方法去取路径

        string fileName =
Path.GetFileName(path); //文件名

                string stmp = Assembly.GetExecutingAssembly (
).Location;

        string ext =
Path.GetExtension(path); //扩展名

                stmp = stmp.Substring ( 0 , stmp.LastIndexOf ( ‘\\’ )
);//删除文件名

一、判定多少个加以的路线是还是不是有效,合法
通过Path.GetInvalid帕特hChars或Path.GetInvalidFileNameChars方法获得不合规的路径/文件名字符,能够根据它来判断路径中是还是不是含有违规字符;

                if ( pathType == 1 )

二、怎么样明确三个路线字符串是表示目录照旧文件
  
使用Directory.Exists或File.Exist方法,如若前者为真,则路径表示目录;尽管后者为真,则路径表示文件
地点的点子有个缺陷正是不可能处理那多少个不存在的文本或目录。那时能够思量采纳Path.GetFileName方法取得其富含的文件名,要是1个路子不为空,而文件名称为空那么它代表目录,不然表示文件;
三、获得路径的有些特定部分
   Path.GetDirectoryName
:再次来到钦定路线字符串的目录音信。
   Path.GetExtension
:重返钦赐的路径字符串的恢宏名。
   Path.GetFileName
:重回钦点路线字符串的文件名和扩充名。
   Path.GetFileNameWithoutExtension
:重返不抱有扩充名的途径字符串的文件名。
   Path.GetPathRoot
:获取内定路线的根目录消息。
四、准确地统1多少个路子而不用去担心那二个烦人的“\”字符
  
使用Path.Combine方法,它会帮您处理烦人的“\”。
5、获得系统目录的路子
  
Environment.SystemDirectory属性:获取系统目录的完全限定路径
  
Environment.GetFolderPath方法:该方法接受的参数类型为Environment.SpecialFolder枚举,通过那几个措施能够获取多量系列   
文件夹的路子,如自个儿的微型总计机,桌面,系统目录等
  
Path.GetTempPath方法:重临当前系统的权且文件夹的门路
6、判断叁个途径是相对路径如故相对路径
   使用Path.IsPathRooted方法
七、读取或安装当前目录
  
使用Directory类的GetCurrentDirectory和SetCurrentDirectory方法
八、使用相对路径
  
设置当前目录后(见上个难题),就可以动用相对路径了。对于3个相对路径,大家能够使用Path.GetFull帕特h方法取得它的完   
全范围路径(相对路径)。
   
注意:纵然打算利用相对路径,建议你将工作目录设置为各类互相文件的联手源点,不然恐怕会引进一些不错觉察的安全隐患,被恶心用户使用来拜访系统文件。

                    return stmp + @”\inputLog.xml”;

九、文件夹浏览会话框(FolderBrowserDialog类)
珍视质量:
Description:树视图控件上海展览中心示的求证文本,如上海体育地方中的“选拔目录–操练”;RootFolder:获取或安装从其初阶浏览的根文件夹,如上海体育场面中设置的自家的处理器(暗中认可为桌面);SelectedPath:获取或安装用户选定的门路,假如设置了该属性,打开对话框时会稳定到钦定路线,默许为根文件夹,关闭对话框时依照该属性获取用户用户选定的不2秘诀;        
ShowNewFolderButton:获取或安装是不是出示新建对话框按钮;
首要方法:

                else if ( pathType == 2 )

ShowDialog:打开该对话框,再次回到值为DialogResult类型值,假使为DialogResult.OK,则足以由SelectedPath属性获取用户选定的路子;

壹.
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName-获取模块的一体化路径。

贰.System.Environment.CurrentDirectory-获取和装置当前目录(该进度从中运营的目录)的通通限定目录。

3.System.IO.Directory.GetCurrentDirectory()-获取应用程序的当前工作目录。那个不必然是先后从中运维的目录,有望程序放在C:\xxx里,这几个函数有希望重临C:\Documents
and Settings\ZYB\,或者C:\Program
Files\Adobe\,有时不自然重回什么。

四.System.AppDomain.CurrentDomain.BaseDirectory-获取程序的基目录。

5.System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase-获取和设置总计该应用程序的目录的名称。

陆.
System.Windows.Forms.Application.Startup帕特h-获取运转了应用程序的可执行文件的门道。效果和贰、5同等。只是七回到的字符串前面多了壹个”\”而已

7.System.Windows.Forms.Application.ExecutablePath-获取运转了应用程序的可执行文件的门路及文件名,效果和一同样。对于Windows程序
和Web
应用程序来说,他们运维的路线是分化等的,所以最首如果判断当前运维的程序是哪一类程序.于是我们得以选拔如下的代码

string path = “”;

if (System.Environment.CurrentDirectory
==AppDomain.CurrentDomain.BaseDirectory)//Windows应用程序则也等于

…{path =
AppDomain.CurrentDomain.BaseDirectory;

}else…{path =
AppDomain.CurrentDomain.BaseDirectory + “Bin\”;

}那样只要大家写了1个类库,类库中用到了Assembly.LoadFrom,由于是通用类库,所以恐怕用到Windows程序中也也许用到Web中,那么用地点的代码就很方便了.

  1、Server.MapPath

  2、System.Windows.Forms.StartupPath

  三、Type.Assembly.Location方法2方可选择于控制台应用程序,WinForm应用程序,Windows服务,方法1可以应用于Web应用程序,方法3都可以利用。但方法3是加载应用程序的门径。假诺是Web应用程序,取得的门路是:C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary
ASP.NET
Files目录。所以Web项目还是利用Server.MapPath吧。不然提出接纳方法二。假若自个儿新建类库。可以投入对System.Windows.Forms.Startup帕特h的引用后使用。

                    return stmp + @”\MiddleDB.xml”;

                else

                    return stmp + @”\AppNo.xml”;

 

using System.IO;

        string path = “d:asdfasdf.bmp”;

        string fileName = Path.GetFileName(path); //文件名

        string ext = Path.GetExtension(path); //扩展名

 

一、判定2个加以的路径是或不是可行,合法
经过Path.GetInvalidPathChars或Path.GetInvalidFileNameChars方法获得不合法的路子/文件名字符,能够依据它来判定路径中是还是不是带有违法字符;

二、怎么样分明3个路子字符串是意味目录依旧文件
  
使用Directory.Exists或File.Exist方法,即便前者为真,则路径表示目录;假诺后者为真,则路径表示文件
上面包车型地铁方式有个毛病正是无法处理那多少个不存在的文件或目录。那时能够思索采取帕特h.GetFileName方法获得其蕴涵的文本名,假诺2个门路不为空,而文件名字为空那么它意味着目录,不然表示文件;
三、获得路径的有些特定部分
   Path.GetDirectoryName :再次回到钦赐路线字符串的目录消息。
   Path.GetExtension :再次来到钦定的不2诀要字符串的扩张名。
   Path.GetFileName :再次来到钦命路线字符串的公文名和壮大名。
   Path.GetFileNameWithoutExtension
:重回不有所扩张名的路子字符串的公文名。
   Path.GetPathRoot :获取钦命路线的根目录新闻。
四、准确地集合八个路子而不用去担心那1个烦人的“\”字符
   使用Path.Combine方法,它会帮您处理烦人的“\”。
5、获得系统目录的门路
   Environment.SystemDirectory属性:获取系统目录的一点壹滴限定路径
  
Environment.GetFolderPath方法:该办法接受的参数类型为Environment.SpecialFolder枚举,通过这几个措施能够获取大量种类   
文件夹的路子,如作者的处理器,桌面,系统目录等
   Path.GetTempPath方法:重回当前系统的一时文件夹的门道
6、判断三个路径是相对路径照旧相对路径
   使用Path.IsPathRooted方法
7、读取或安装当前目录
   使用Directory类的GetCurrentDirectory和SetCurrentDirectory方法
八、使用相对路径
  
设置当前目录后(见上个难点),就能够使用相对路径了。对于1个相对路径,大家得以应用Path.GetFullPath方法得到它的完   
全范围路径(相对路径)。
   
注意:借使打算利用相对路径,建议您将工作目录设置为顺序相互文件的一道起源,不然大概会引进1些毋庸置疑察觉的安全隐患,被恶意用户选用来做客系统文件。

玖、文件夹浏览会话框(FolderBrowserDialog类)
重视性能:
Description:树视图控件上显示的验证文本,如上海体育地方中的“采用目录–练习”;RootFolder:获取或安装从其初始浏览的根文件夹,如上海教室中安装的本身的电脑(暗中同意为桌面);SelectedPath:获取或设置用户选定的不二法门,要是设置了该属性,打开对话框时会一定到钦点路线,暗中同意为根文件夹,关闭对话框时依照该属性获取用户用户选定的门道;        
ShowNewFolderButton:获取或设置是或不是出示新建对话框按钮;
首要措施:

ShowDialog:打开该对话框,重回值为DialogResult类型值,假使为DialogResult.OK,则能够由SelectedPath属性获取用户选定的不二秘诀;

①.
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName-获取模块的完好路径。

2.System.Environment.CurrentDirectory-获取和装置当前目录(该进度从中运营的目录)的一心限定目录。

三.System.IO.Directory.GetCurrentDirectory()-获取应用程序的当前工作目录。那几个不自然是程序从中运营的目录,有十分大大概程序放在C:\xxx里,那么些函数有非常大可能率重回C:\Documents
and Settings\ZYB\,或者C:\Program Files\Adobe\,有时不肯定重回什么。

四.System.AppDomain.CurrentDomain.BaseDirectory-获取程序的基目录。

5.System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase-获取和设置计算该应用程序的目录的称谓。

6.
System.Windows.Forms.Application.StartupPath-获取运转了应用程序的可执行文件的路子。效果和二、5等同。只是5重回的字符串前边多了2个”\”而已

7.System.Windows.Forms.Application.ExecutablePath-获取运营了应用程序的可执行文件的路子及文件名,效果和一相同。对于Windows程序
和Web
应用程序来说,他们运维的门道是差异等的,所以最首尽管判断当前运行的次序是哪一类程序.于是大家得以选取如下的代码

string path = “”;

if (System.Environment.CurrentDirectory
==AppDomain.CurrentDomain.BaseDirectory)//Windows应用程序则格外

…{path = AppDomain.CurrentDomain.BaseDirectory;

}else…{path = AppDomain.CurrentDomain.BaseDirectory + “Bin\”;

}那样1旦我们写了二个类库,类库中用到了Assembly.LoadFrom,由于是通用类库,所以也许用到Windows程序中也恐怕用到Web中,那么用地方的代码就很便利了.

  1、Server.MapPath

  2、System.Windows.Forms.StartupPath

  3、Type.Assembly.Location方法二得以应用于控制台应用程序,WinForm应用程序,Windows服务,方法1方可选择于Web应用程序,方法三都得以运用。但方法3是加载应用程序的路线。假设是Web应用程序,取得的路子是:C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary
ASP.NET
Files目录。所以Web项目照旧采纳Server.MapPath吧。不然提议使用方法2。即便自身新建类库。能够参与对System.Windows.Forms.StartupPath的引用后使用。

 

转自:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有