2013-04-17 119 views
2

我有一個通過StreamReader將幾個文本文件讀入List的項目,我在Resources下添加了我的解決方案,當我嘗試使用StreamReader引用文件時,我得到一個「FileNotFound」例外。打開文件時FileNotFound異常

的文件被複制到BIN \調試\資源,並且錯誤說,它正試圖找到他們根據斌\調試..我如何引用他們不使用文字路徑? (例如C:\用戶\等),因爲當我編譯,如果我引用實際路徑就不會其他人的電腦上運行。調用文本文件

代碼:

using (sr = new StreamReader("FileName.txt")) 
{ 
    while (!sr.EndOfStream) 
     Names.Add(sr.ReadLine()); 
} 

下的文本文件的屬性我有它設置爲「一直拷貝」下生成操作它被設置爲「嵌入的資源」。

基本上我的主要目標是將項目編譯爲一個exe文件,並在內部引用文本文件(它們的內容不會被程序改變),所以我的應用程序將是可移植的。

+0

您是否嘗試過 「資源/則Filename.txt」? :) – J0HN

+0

嘗試複製bin \ debug下的文件 –

+0

使用相對文件路徑。 – tnw

回答

0

錯誤是顯而易見的。更改代碼:

using (sr = new StreamReader("Resources\FileName.txt")) 
{ 
    while (!sr.EndOfStream) 
     Names.Add(sr.ReadLine()); 
} 
0

在您的情況,將僅更換路徑Resources\FileName.txt

在其他情況下,你提到你想使便攜式.exe文件被刪除的錯誤。然後你需要在應用程序中嵌入文件。現在看看如何在您的.exe文件中嵌入:

  • 展開PropertiesSolution Explorer
  • 雙擊Resources

    Resources標籤的左上角,會有一個組合框 enter image description here

  • 選擇文件

  • 現在只需拖放y我們的文件
  • 要嵌入文件,您可以通過點擊右邊的 去每個文件的屬性。選擇從Persistence 財產Embedded in .resx

要使用該文件,您可以使用Properties.Resources.YourFile

有關詳細信息,請鏈接http://msdn.microsoft.com/en-us/library/7k989cfy(v=vs.80).aspx

+0

(對不起,雷電導致電力出現在我家,現在回來)您的回答非常明確,但可以在哪裏設置「嵌入.Resx」? i.imgur.com/amQpvUC。png – Abraham

+0

是的,這個選項不適用於'Files',但是它和其他嵌入式文件一樣工作。我從來沒有研究過它,爲什麼,對我感到羞恥! – Shaharyar