我正在研究一個簡單的程序,其中的一部分從txt文件填充列表。c# - 在哪裏放置txt文件
這可能不是一個聰明的問題,但是,我沒有找到任何有關這方面的信息。 我想知道在哪裏放置文本文件在應用程序目錄中的最佳位置。
O知道Resouces
但我無法獲得存儲在那裏的文件的路徑。
這樣兩個問題:
地方是把一個txt文件的最佳地點? (或任何其他重要的文件在應用程序中使用)
如果我把文件放在
Resources
如何得到它的路徑?
(對不起FO我的英語)
我正在研究一個簡單的程序,其中的一部分從txt文件填充列表。c# - 在哪裏放置txt文件
這可能不是一個聰明的問題,但是,我沒有找到任何有關這方面的信息。 我想知道在哪裏放置文本文件在應用程序目錄中的最佳位置。
O知道Resouces
但我無法獲得存儲在那裏的文件的路徑。
這樣兩個問題:
地方是把一個txt文件的最佳地點? (或任何其他重要的文件在應用程序中使用)
如果我把文件放在Resources
如何得到它的路徑?
(對不起FO我的英語)
如果這些文件你不需要公開給用戶並且只提供一個內部目的,那麼你可以將它們作爲資源嵌入到你的程序集中,並在需要時將它們提取出來。
爲此,請在您的應用程序中創建一個新目錄。我們稱之爲'資源'。然後,添加文本文件。使用每個文本文件的屬性窗口將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
找到/枚舉和讀取文件。
當應用程序有關聯/伴侶的數據文件,它有時是有道理的嵌入它們作爲一種資源,因爲那時有較少的機會,他們與例如被篡改刪除或修改的數據。
其他時候保持文件鬆散是有意義的....所以你必須決定存儲它們的最佳位置....你可以在應用程序的安裝位置或者在應用程序數據/ AppData目錄。
對於資源嵌入文件看看這個鏈接:
它有一個一步一步的指導,展示如何嵌入一個文件(例如,將文本文件轉換爲Resources),然後使用StreamReader
來訪問它並閱讀其內容。
來存儲文件,並從一個位置適當目錄訪問他們,你可以使用:
System.Environment.SpecialFolder.ApplicationData
與
Environment.GetFolderPath()
找出應用程序數據目錄。
然後,當您創建應用程序安裝程序/安裝程序時,應該讓它爲AppData下的應用程序創建一個目錄,然後您可以決定要將哪些文件安裝到該位置。
參見:
注意,的ApplicationData 「漫遊」 ...即。當您登錄到不同的機器,這些文件被轉移到該計算機作爲個人資料的一部分....你可能不希望這樣....所以你也可以使用:
System.Environment.SpecialFolder.CommonApplicationData
你不需要對你的英語感到抱歉..我看到了很多更糟! – 2012-08-16 23:29:08
我會在評論中說,文本文件的最佳位置是您在具有Windows APP的%APPDATA%(漫遊),%LOCALAPPDATA%或%PROGRAMDATA%(在用戶之間共享)值內創建的目錄,並在%USERPROFILE%內。既然你唯一的要求是因爲你無法獲得資源,那麼這裏的答案就是你真正需要的。 – 2012-08-16 23:36:11
是的,不要擔心你的英語。我是講英語的作家,有時候還會寫更糟糕的東西。 – 2012-08-16 23:37:01