C#设置文件保存路径
2013-09-23 15:29
267 查看
System.Environment.CurrentDirectory
System.IO.Directory.GetCurrentDirectory()
这两个方法获得的路径是一样的,获得的是当前路径,这个路径不一定是程序所在的路径。任何会改变当前路径的方法都会改变它,例如:OpenFileDialog每换一次目录就会改变它。因此,用这2个方法获取程序路径并不可靠。
文件操作所使用的路径就是这个路径,而真正需要用到的路径是根据程序启动位置的变化而变化的.所以应该获取的是: System.Windows.Forms.Application.StartupPath;获取启动应用程序的可执行文件的路径,不包括可执行文件的名称.然后在根据这个路径做文件操作,就没问题了.
以下是转载的原文:
C#获取程序路径的方法中需要注意的地方
版本1
获取运行程序路径的方法主要有以下7种:
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
他获取的是Module的文件名,如果在VS2008的调试环境中,获取的是 [程序名].vshost.exe的完整文件名。
System.Environment.CurrentDirectory
System.IO.Directory.GetCurrentDirectory()
这两个方法获得的路径是一样的,获得的是当前路径,这个路径不一定是程序所在的路径。任何会改变当前路径的方法都会改变它,例如:OpenFileDialog每换一次目录就会改变它。因此,用这2个方法获取程序路径并不可靠。
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:
//获取新的 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文件所在的目录)
//获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。
string str = System.AppDomain.CurrentDomain.BaseDirectory;
result: X:\xxx\xxx\ (.exe文件所在的目录+"\")
//获取和设置包含该应用程序的目录的名称。
string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
result: X:\xxx\xxx\ (.exe文件所在的目录+"\")
//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
string str = System.Windows.Forms.Application.StartupPath;
result: X:\xxx\xxx (.exe文件所在的目录)
//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。
string str = System.Windows.Forms.Application.ExecutablePath;
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
3.获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名。
string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
Result: C:\xxx\xxx\xxx.exe
4.获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。
string str = System.AppDomain.CurrentDomain.BaseDirectory;
Result: C:\xxx\xxx\
5.获取应用程序的当前工作目录。
string str = System.IO.Directory.GetCurrentDirectory();
Result: C:\xxx\xxx
System.IO.Directory.GetCurrentDirectory()
这两个方法获得的路径是一样的,获得的是当前路径,这个路径不一定是程序所在的路径。任何会改变当前路径的方法都会改变它,例如:OpenFileDialog每换一次目录就会改变它。因此,用这2个方法获取程序路径并不可靠。
文件操作所使用的路径就是这个路径,而真正需要用到的路径是根据程序启动位置的变化而变化的.所以应该获取的是: System.Windows.Forms.Application.StartupPath;获取启动应用程序的可执行文件的路径,不包括可执行文件的名称.然后在根据这个路径做文件操作,就没问题了.
以下是转载的原文:
C#获取程序路径的方法中需要注意的地方
版本1
获取运行程序路径的方法主要有以下7种:
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
他获取的是Module的文件名,如果在VS2008的调试环境中,获取的是 [程序名].vshost.exe的完整文件名。
System.Environment.CurrentDirectory
System.IO.Directory.GetCurrentDirectory()
这两个方法获得的路径是一样的,获得的是当前路径,这个路径不一定是程序所在的路径。任何会改变当前路径的方法都会改变它,例如:OpenFileDialog每换一次目录就会改变它。因此,用这2个方法获取程序路径并不可靠。
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:
//获取新的 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文件所在的目录)
//获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。
string str = System.AppDomain.CurrentDomain.BaseDirectory;
result: X:\xxx\xxx\ (.exe文件所在的目录+"\")
//获取和设置包含该应用程序的目录的名称。
string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
result: X:\xxx\xxx\ (.exe文件所在的目录+"\")
//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
string str = System.Windows.Forms.Application.StartupPath;
result: X:\xxx\xxx (.exe文件所在的目录)
//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。
string str = System.Windows.Forms.Application.ExecutablePath;
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
3.获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名。
string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
Result: C:\xxx\xxx\xxx.exe
4.获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。
string str = System.AppDomain.CurrentDomain.BaseDirectory;
Result: C:\xxx\xxx\
5.获取应用程序的当前工作目录。
string str = System.IO.Directory.GetCurrentDirectory();
Result: C:\xxx\xxx
相关文章推荐
- 【struts2】配置log4j,设置日志文件保存路径
- C# savefiledialog 保存文件后 再操作数据库 提示数据库文件路径错误
- c#选择文件保存路径
- C#之WinForm基础 设置保存文件对话框的文件类型
- C# 选择文件 选择路径 保存文件名称路径
- C# OpenFileDialog设置默认打开的文件路径
- C#项目打开/保存文件夹/指定类型文件,获取路径
- ipython notebook设置工作路径和自动保存.py文件 ipython_notebook_config.py
- C#获取IIS中网站日志文件保存路径
- C#中配置文件保存的路径
- 简单的C# 保存内容到指定路径下的XML文件中方法
- C# 设置当前程序调用的dll文件以及其他文件的寻址路径
- c# 根据配置文件路径,设置和获取config文件 appSettings 节点值
- C#打开/保存文件,获取路径
- java swing 设置文件保存路径
- C#按键打开文件选择对话框,并把选择好的路径保存/显示到textBox
- MyEclipse编译后,classes文件夹下为空2. 3.删除现在的项目,提前设置好编译文件输出路径,重新导入源文件,设置eclipse为保存时编译,然后在保存的时候就可以自动编译了
- delphi环境中设置文件默认保存路径
- C#项目打开/保存文件夹/指定类型文件,获取路径
- C#中保存Gif文件设置透明无效果