使用相对路径检查文件是否存在的最佳方法是什么.
我使用了以下方法,但尽管文件存在,它仍然返回false.
bool a = File.Exists("/images/Customswipe_a.png");
Run Code Online (Sandbox Code Playgroud)
Mik*_*ark 12
那不是一条相对的道路.你需要先离开第一个,/
否则它将被解释为root(即C:/ images ......)
我猜你是在asp.net应用程序中运行这段代码,这就是你弄错的原因.
在asp.net中,您应该使用Server.MapPath("/images/Customswipe_a.png")
获取"正确"路径(相对于Web应用程序根目录).否则,您将获得Web服务器可执行文件的本地路径(IIS/WEBDAV/..其他任何名称).
您只需要定义您的文件相对于什么
在每种情况下,我建议您通过以下Path.Combine
方法将其转换为绝对路径:
public static readonly string AppRoot = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
...
//calling with a '/' heading makes the path absolute so I removed it
var fullPath = Path.Combine(AppRoot, "images/Customswipe_a.png");
var exists = File.Exists(fullPath);
Run Code Online (Sandbox Code Playgroud)
这样您就可以保证您正在寻找的地方。甚至“打开/保存文件”对话框也可能会更改您当前的目录。因此,File.Exists
没有完整路径的调用通常是一个错误的决定。
归档时间: |
|
查看次数: |
29220 次 |
最近记录: |