2012-11-13 28 views
1

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

+0

这是你在找什么? http://stackoverflow.com/questions/6719293/defining-a-working-directory-for-executing-a-program-c – kenny

+0

@kenny什么?我想你可能已经忘记了一个链接 –

+0

是的,但是你必须在那里下滑我添加了10秒或更短的时间 – kenny

回答

4

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

我不靠近我的web服务器的权利,但像

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

应该让你开始。

+0

非常感谢,我认为这是行得通的。 –

+0

真棒,很高兴听到它。 –

0

提供一个相对目录,如“图片”,而不是“〜/图片/”,应该做的伎俩。

+0

仍然是同样的问题,它看起来在C:\ Program Files文件(x86)\ Common Files \ Microsoft Shared \ DevServer \ 10.0 –

1

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

尝试Application.StartupPath

+0

+1。 StartupPath和'Path.Combine'来构造路径。 ('“〜”是ASP.Net世界中的“站点根目录”文件夹......) –

+0

这是一个asp.net应用程序 –

0

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

+0

如果在字符串中使用\,则将其视为转义序列 –

+0

@Craig :然后你逃脱它('\\')。 –

+0

ok,/为这一行工作Image1.ImageUrl =“〜/图片/”imageNumber +“.jpg”; –

相关问题