using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Utility
{
/// <summary>
/// @Author:梁继龙
/// @Date:2012/8/1
/// @Description:文件处理类
/// </summary>
public class AccessDirFileHelper
{
public static AccessDirFileHelper instance = null;
private static readonly object lockObj = new object();
protected static System.Reflection.Assembly assembly = null; //反射
/// <summary>
/// 单例模式
/// </summary>
/// <returns></returns>
public static AccessDirFileHelper GetInstance()
{
//lock (AccessFileHelper.instance){ }
if (instance == null)
{
lock (lockObj)
{
instance = new AccessDirFileHelper();
}
}
return instance;
}
/// <summary>
/// 获取当前进程的完整路径,包含文件名(进程名)
/// result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名
/// </summary>
/// <returns></returns>
public string GetLocalProcessFileName()
{
try
{
return this.GetType().Assembly.Location;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名).
//result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)
/// </summary>
/// <returns></returns>
public string GetCurrentProcessFileNamePath()
{
try
{
return System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 获取和设置当前目录(即该进程从中启动的目录)的完全限定路径.
/// result: X:\xxx\xxx (.exe文件所在的目录)
/// </summary>
/// <returns></returns>
public String GetCurrentEnvironmentDirectoryPath()
{
try
{
return System.Environment.CurrentDirectory;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。
///string str = System.AppDomain.CurrentDomain.BaseDirectory;
///result: X:\xxx\xxx\ (.exe文件所在的目录+"\")
///Example:用来判断winfrom会少一个Debug E:\\ASP.NET\\MyApp\\WebApp\\bin\\Debug\\bin\\Utility.dll" web
///Example:用来判断winfrom会多一个Debug E:\\ASP.NET\\MyApp\\WinApp\\bin\\Debug\\Utility.dll" winform
///此方法一般判断一个解决方案启动是web还是winform读取文件(dll,config,txt等..)看情况定
/// </summary>
public string GetCurrentDomainBaseDirectory()
{
try
{ //效果一样
//System.Threading.Thread.GetDomain().BaseDirectory
return System.AppDomain.CurrentDomain.BaseDirectory;
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// 获取和设置包含该应用程序的目录的名称。
///string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
///result: X:\xxx\xxx\ (.exe文件所在的目录+"\")
/// </summary>
/// <returns></returns>
public string GetCurrentDomainSetupInformationName()
{
try
{
return System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称
/// string str = System.Windows.Forms.Application.StartupPath;
/// result: X:\xxx\xxx (.exe文件所在的目录)