2012-09-02 201 views
3

我的文件夾中有兩個圖像文件,我必須在我的程序中調用。我用過:使用文件流從根目錄文件夾讀取文件

AppDomain.curentDomain.baseDirectory + "Path and file name"; 

但是,這進入我的bin目錄,我不想;我想從根目錄中讀取我的文件夾名稱作爲資源的文件夾,我已經在那裏保存了我的文件並調用圖像,所以請問這是什麼代碼?

如何從Windows窗體應用程序的根目錄讀取數據?

+0

AppDomain.curentDomain.baseDirectory 而 Application.startupPath 在我的源代碼的bin/debug目錄 – SurajSing

回答

2

通常,您必須將這些項目設置爲複製到bin文件夾。 右鍵單擊解決方案資源管理器/導航器,選擇屬性並將其設置爲 「複製到輸出目錄」。希望這會起作用

1

您可以使用此:

System.IO.Path.Combine(Environment.CurrentDirectory, "Path to File") 

Environment.CurrentDirectory會給你,你的應用程序是從運行的路徑。無論它在Visual Studio中運行還是部署應用程序都無關緊要。

使用示例

// Read image1.jpg from application folder, into Image object 
Image myImage = Image.FromFile(System.IO.Path.Combine(Environment.CurrentDirectory, "image1.jpg")); 
+0

我使用Windows應用程序,以便II不能使用使用Server.Mappath 那麼,什麼是兩個搜索替代的! 幫助夥計 – SurajSing

+0

您標記了ASP.NET的問題。我會更新我的答案。 – Scott

+0

我已更新我的答案 – Scott

1
​​

返回絕對路徑到您的文件,但是這將只有,而你在VS的工作,因爲沒有當你部署應用程序BIN \調試工作。

string path = Path.Combine(Application.StartupPath, @"..\..\YourFile.JPG"); 
FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read); 
Image image = Image.FromStream(stream); 
stream.Close(); 

如果你打算用exe文件一起發送的文件,用鼠標右鍵單擊在解決方案資源管理器中,選擇包括項目,右擊再次,選擇屬性,並設置生成操作:無複製到輸出目錄:在屬性窗口中複製如果更新,則會在每次構建時將該文件複製到bin \ Debug。然後你可以使用:

string path = Path.Combine(Application.StartupPath, "YourFile.JPG"); 

將在VS 工作,當你部署。更好的是將文件作爲資源嵌入到可執行文件中,以實現更清晰的部署。

+0

如何使用filestream! – SurajSing

+0

更新了我的回答,祝你好運。 – RollingCog

5

爲什麼不使用Environment.CurrentDirectory

string path = Environment.CurrentDirectory + @"\Image1.jpg"; 
FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read); 
Image image = Image.FromStream(stream); 
stream.Close(); 

這是一種更好的組合應用程序啓動路徑的方式。 :) Environment.CurrentDirectory返回您的應用程序所在的當前路徑。

+0

爲什麼不是Path.Combine()? – Casey

0

使用Server.MapPath("/path/to/file")

相關問題