有没有办法让System.IO.Directory.GetFiles(字符串)查看程序的目录?

时间:2012-11-13 17:43:23

标签: c# asp.net io tilde-expansion

我正在尝试使用string[] files = System.IO.Directory.GetFiles("~/Pictures/");在程序中搜索图片文件夹。这将在以后用于随机选择要在图像框中显示的图片。我在尝试查找〜/图片时出现错误,因为该方法正在查找'C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ DevServer \ 10.0 \〜\图片\”。代替。是不是“〜”会让它看起来在程序目录中?如果在安装程序之前我不知道它会是什么,我该如何查看程序目录?任何帮助将不胜感激!!

4 个答案:

答案 0 :(得分:4)

波浪号路径是一个asp.net构造,表示当前运行的asp.net应用程序的根目录。它在asp.net上下文之外没有任何意义 - Directory.GetFiles不知道如何使用它。 GetFiles 知道如何使用常规文件系统路径。所以问题就变成了:我们如何将asp.net相对路径转换为一个GetFiles可以使用。答案是HttpContext.Current.Server.MapPath

我现在不在我的网络服务器附近,但是像

那样
var serverPath = HttpContext.Current.Server.MapPath("~/Pictures/");
var files = Directory.GetFiles(serverPath);

应该让你入门。

答案 1 :(得分:1)

我不认为你会发现“〜”有任何意义。

尝试Application.StartupPath

答案 2 :(得分:0)

提供相对目录,如“图片”,而不是“〜/ Pictures /”,应该可以做到。

答案 3 :(得分:0)

只需使用System.IO.Directory.GetFiles('Pictures')即可。 Windows上的路径分隔符为\,而不是/,而当前目录下的目录仅作为相对路径位置引用。