zoukankan      html  css  js  c++  java
  • 工作目录

    目录

    返回目录

    1. 修改当前进程的工作目录

    使用System.IO.Directory.GetCurrentDirectory和SetCurrentDirectory方法可以得到或者设置当前进程的工作目录(又称当前目录,初始目录)。

    Environment类的CurrentDirectory属性(可读可写)内部调用Directory的GetCurrentDirectory和SetCurrentDirectory方法,因此它们是等价的。

    staticvoid Main(string[] args)

    {

        test();

        //更改工作目录

        Directory.SetCurrentDirectory(@"D:archives");

        test();

    }

    //输出目录

    staticvoid test()

    {

        //当前工作目录

        Console.WriteLine(Directory.GetCurrentDirectory());

        //从工作目录的根目录的相对路径

        Console.WriteLine(Path.GetFullPath(@"a"));

        //从工作目录的相对路径

        Console.WriteLine(Path.GetFullPath(@"a"));

        Console.WriteLine();

    }

    输出:

    e:usersmgendocumentsvisual studio 2010ProjectsTTCTTCinRelease

    e:a

    e:usersmgendocumentsvisual studio 2010ProjectsTTCTTCinReleasea

    D:archives

    D:a

    D:archivesa

    可以看出来,更改工作目录后,相对路径的值会跟随当前的工作目录而改变。

    返回目录

    2. 修改其它进程的工作目录

    System.Diagnostics.ProcessStartInfo类的WorkingDirectory属性可以为一个准备启动的进程指定一个工作目录(注意ProcessStartInfo的UseShellExecute必须为false,UseShellExecute为true时WorkingDirectory用来指定文件的包含目录),用一个简单的命令行DIR指令就可以做个测试:

    Process.Start("cmd", "/k dir");

    很简单,并没有修改默认进程的工作目录,那么会在命令行中显示当前执行文件目录的子文件夹列表。

    接下来修改工作目录:

    var psi =newProcessStartInfo("cmd", "/k dir");

    //不使用ShellExecute,用CreateProcess

    psi.UseShellExecute =false;

    psi.WorkingDirectory =@"D:archives";

    Process.Start(psi);

    这个DIR会显示D盘的Archives目录下的子目录信息。

    返回目录

    3. 怎样知道真正的执行文件路径?

    既然可以修改其他程序的工作目录。那么你的程序工作目录也有可能被修改,那么Directory.GetCurrentDirectory方法的结果是不确定的。那么怎样知道自己程序真正所在的目录呢?

    有多种方法:

    Windows Forms程序都熟知的:

    //Applicatuib类在System.Windows.Forms命名空间内

    Path.GetDirectoryName(Application.ExecutablePath);

    还有:

    Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);

    Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

  • 相关阅读:
    Linux安装配置tomcat
    linux 安装jdk
    让/etc/profile文件修改后立即生效
    group by 和聚合函数
    mysql插入日期 vs oracle插入日期
    Thinkphp学习笔记-删除缓存
    Thinkphp错误-phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连
    Thinkphp学习笔记-模板赋值
    Thinkphp学习笔记-模板主题
    Windows-设置系统服务不开机启动
  • 原文地址:https://www.cnblogs.com/qianyz/p/3373995.html
Copyright © 2011-2022 走看看