2012-08-16 110 views
2

我正在研究一個簡單的程序,其中的一部分從txt文件填充列表。c# - 在哪裏放置txt文件

這可能不是一個聰明的問題,但是,我沒有找到任何有關這方面的信息。 我想知道在哪裏放置文本文件在應用程序目錄中的最佳位置。

O知道Resouces但我無法獲得存儲在那裏的文件的路徑。

這樣兩個問題:

  1. 地方是把一個txt文件的最佳地點? (或任何其他重要的文件在應用程序中使用)

  2. 如果我把文件放在Resources如何得到它的路徑?

(對不起FO我的英語)

+1

你不需要對你的英語感到抱歉..我看到了很多更糟! – 2012-08-16 23:29:08

+1

我會在評論中說,文本文件的最佳位置是您在具有Windows APP的%APPDATA%(漫遊),%LOCALAPPDATA%或%PROGRAMDATA%(在用戶之間共享)值內創建的目錄,並在%USERPROFILE%內。既然你唯一的要求是因爲你無法獲得資源,那麼這裏的答案就是你真正需要的。 – 2012-08-16 23:36:11

+0

是的,不要擔心你的英語。我是講英語的作家,有時候還會寫更糟糕的東西。 – 2012-08-16 23:37:01

回答

2

如果這些文件你不需要公開給用戶並且只提供一個內部目的,那麼你可以將它們作爲資源嵌入到你的程序集中,並在需要時將它們提取出來。

爲此,請在您的應用程序中創建一個新目錄。我們稱之爲'資源'。然後,添加文本文件。使用每個文本文件的屬性窗口將BuildAction設置更改爲「Embedded Resource」。然後,在你的代碼,一旦你需要的文件的內容,你可以用這樣的代碼來提取它:

using System.Reflection; 

// ... 

using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyApplication.Resources.MyFile.txt")) { 
    using (StreamReader reader = new StreamReader(stream)) { 
     string contents = reader.ReadToEnd(); 
     // Do stuff with the text here 
    } 
} 

如果你不想這樣做,正確位置來放置文件是在您在AppData目錄下創建的目錄。這是一個已知的系統路徑,你可以得到這樣的:

string folderLocation = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
string myPath = Path.Combine(folderLocation, "MyAppName"); 

然後,您可以使用StreamReader或其他類System.IO找到/枚舉和讀取文件。

1

當應用程序有關聯/伴侶的數據文件,它有時是有道理的嵌入它們作爲一種資源,因爲那時有較少的機會,他們與例如被篡改刪除或修改的數據。

其他時候保持文件鬆散是有意義的....所以你必須決定存儲它們的最佳位置....你可以在應用程序的安裝位置或者在應用程序數據/ AppData目錄。


對於資源嵌入文件看看這個鏈接:

它有一個一步一步的指導,展示如何嵌入一個文件(例如,將文本文件轉換爲Resources),然後使用StreamReader來訪問它並閱讀其內容。


來存儲文件,並從一個位置適當目錄訪問他們,你可以使用:

System.Environment.SpecialFolder.ApplicationData

Environment.GetFolderPath()

找出應用程序數據目錄。

然後,當您創建應用程序安裝程序/安裝程序時,應該讓它爲AppData下的應用程序創建一個目錄,然後您可以決定要將哪些文件安裝到該位置。

參見:

注意,的ApplicationData 「漫遊」 ...即。當您登錄到不同的機器,這些文件被轉移到該計算機作爲個人資料的一部分....你可能不希望這樣....所以你也可以使用:

System.Environment.SpecialFolder.CommonApplicationData