我的代码访问项目目录中“Conf”目录下的文件。我目前正在使用如下的绝对路径打开文件:
File.ReadAllLines("C:\project name\Conf\filename");
如果可以使用像
这样的相对路径,那我就变瘦了File.ReadAllLines("/Conf/filename");
但它不起作用;正如预期的那样,它会抛出异常我确实检查过MSDN(链接如下),但似乎“ReadAllLines()”方法不接受相对路径。
http://msdn.microsoft.com/en-us/library/s2tte0y1.aspx
任何想法,我怎样才能使用相对路径而不是使用绝对路径?
谢谢, 拉胡
答案 0 :(得分:1)
如MSDN中所述,您无法使用相对路径,但是您可以使用Environment.CurrentDirectory
或System.Reflection.Assembly.GetExecutingAssembly().Location
答案 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...