2012-11-13 27 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」; –

相關問題