2

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

4

4 回答 4

5

波浪号路径是一个 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);

应该让你开始。

于 2012-11-13T17:59:31.253 回答
1

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

尝试 Application.StartupPath

于 2012-11-13T17:47:33.917 回答
0

提供一个相对目录,比如“图片”,而不是“~/Pictures/”,应该可以解决问题。

于 2012-11-13T17:47:08.600 回答
0

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

于 2012-11-13T17:48:07.567 回答