//FileInfo fi = new FileInfo();  fi.FUllname
和Application.StartupPath;我都试过了。。取的都不对。。
这是为什么。?
我要的是在当前项目下一个文件的绝对路径,但它取的总是整个解决方安的Output下的路径。。请问各位有方法吗?

解决方案 »

  1.   

    你的可执行文件编译到这里就应该使这个Output
      

  2.   

    Application.StartupPath 可以获取当前程序的启动路径
      

  3.   

    System.IO.Path.GetFullPath(filename);这个总可以吧
      

  4.   

    参见这个。假如你那个文件名叫:        Program.cs 
       string aaa = AppDomain.CurrentDomain.BaseDirectory + "Program.cs";
       textBox1.Text=Path.GetFullPath(aaa);
      

  5.   

    说老实话,你的问题我没看明白 “当前项目下一个文件的绝对路径” 这句话是什么意思呢?
    如果是在工程目录下,取到文件是没有意义的。因为你发布的时候难道还带着工程? 必然是Output(bin)所以你能取到的目录都是相对于你所说的Output目录。
      

  6.   

    Application.StartupPath  取到你执行文件的绝对路径,然后根据你文件与这个文件的相对路径,得到文件的绝对路径。
    如果是打开了一个文件 FullName 应该是没问题的。.
      

  7.   

    就是说我的工程下的一个文件。比如FORM1.CS。。
      

  8.   

    我也想知道这个问题,我现在都是一层一层往上转的
    如:
      System.IO.DirectoryInfo mDir = new System.IO.DirectoryInfo(System.Windows.Forms.Application.StartupPath);
                System.IO.DirectoryInfo dir = mDir.Parent;
                System.IO.DirectoryInfo dir_a = dir.Parent;
    String str=dir_a.FullName;
      

  9.   

    参考StackFrame.GetFileName 方法
    不知道你为什么需要获得代码文件的路径~~~获得更多跟 Exception 有关的信息??http://msdn.microsoft.com/zh-tw/library/system.diagnostics.stackframe.getfilename(VS.80).aspx
    http://blog.joycode.com/ghj/archive/2008/03/05/114925.aspx
      

  10.   

    Response.Write(Request.PhysicalApplicationPath);
      

  11.   

    呵呵,是在IDE下的绝对路径,是这个意思吗?
      

  12.   

    application.startpath获取程序启动位置绝对路径
      

  13.   

    你能获取到文件的fileInfo,不明白FullName属性为什么不行
      

  14.   

    你为什么要获取cs file 路径? 你的程序运行的时候,已经把他们build 到dll 或者是exe 里面了
      

  15.   

    对,一层一层转可以实现,我刚做完,给你个例子你参考吧
             /// <summary>
            /// 根据从数据库中提取出来的文件路径,分离出在客户端头像的路径
             /// </summary>
            /// <param name="fileName">数据库中提取出来的文件路径</param>
            /// <param name="faceFlag">是否进入客户端头像目录下</param>
            /// <returns>faceFalg为True时,返回头像目录下的头像全路径,当faceFalg为False时,返回用户ID目录下的头像全路径        </returns>
            public string getImgPath(string fileName, bool faceFlag)
            {
                int place;
                string comPath = Application.StartupPath;
                for (int i = 0; i < 2; i++)
                {
                    place = comPath.LastIndexOf("\\");
                    comPath = comPath.Remove(place);
                }
                if (!faceFlag)
                {
                    if (Directory.Exists(comPath + @"\\" + myInfo.Key.ToString()))
                    {
                        comPath = comPath + @"\\" + myInfo.Key.ToString() + fileName;
                    }
                    else
                    {
                        Directory.CreateDirectory(comPath + @"\\" + myInfo.Key.ToString());
                        comPath = comPath + @"\\" + myInfo.Key.ToString() + fileName;
                    }
                }
                else if (faceFlag)
                {
                     comPath = comPath + @"\NEWFACE\" + fileName;
                }
                return comPath;
            }别直接用啊,你改改吧,可以改成动态形式的,大体的形式如此
      

  16.   

     OpenFileDialog ofd=new OpenFileDialog();
    if(DialogResult.OK==ofd.ShowDialog())
    {
     string fileName =ofd.FileName;
     MessageBox.Show(fileName);
    }
    这样得到的肯定是你要的。
      

  17.   

    不错。可以用http://webczw.3322.org