File.ReadAllLines方法的相对路径

时间:2011-03-15 16:50:50

标签: c#-2.0 file.readalllines

我的代码访问项目目录中“Conf”目录下的文件。我目前正在使用如下的绝对路径打开文件:

File.ReadAllLines("C:\project name\Conf\filename");

如果可以使用像

这样的相对路径,那我就变瘦了
File.ReadAllLines("/Conf/filename");

但它不起作用;正如预期的那样,它会抛出异常我确实检查过MSDN(链接如下),但似乎“ReadAllLines()”方法不接受相对路径。

http://msdn.microsoft.com/en-us/library/s2tte0y1.aspx

任何想法,我怎样才能使用相对路径而不是使用绝对路径?

谢谢, 拉胡

3 个答案:

答案 0 :(得分:1)

如MSDN中所述,您无法使用相对路径,但是您可以使用Environment.CurrentDirectorySystem.Reflection.Assembly.GetExecutingAssembly().Location

答案 1 :(得分:1)

这是我最喜欢的方式。

  1. 使您的文件成为嵌入式资源。

        /// <summary>
        /// This class must be in the same folder as the embedded resource
        /// </summary>
    public class GetResources
    {       
        private static readonly Type _type = typeof(GetResources);
    
        public static string Get(string fileName)
        {
            using (var stream = 
            _type.Assembly.GetManifestResourceStream
           (_type.Namespace + "." + fileName))
            {
                if (stream != null)
                    using (var reader = new StreamReader(stream))
                    {
                        return reader.ReadToEnd();
                    }
            }
            throw new FileNotFoundException(fileName);
        }
     }
    

答案 2 :(得分:0)

为简单起见,请使用以下内容:

string current_path = System.IO.Path.GetDirectoryName(Application.ExecutablePath);

string[] lines_from_file = System.IO.File.ReadAllLines(current_path + "/Conf/filename");

...additional black magic here...