我有一個Windows 8商店應用程序,我創建了一個「App_Data」文件夾。我添加了一個sqlite數據庫文件,現在我試圖獲取文件路徑來創建連接。如何訪問項目文件夾中的文件 - Windows 8商店應用程序?
回答
我將現有的sqlite文件添加到項目的公用文件夾,並將生成操作設置爲內容。您無法寫入此文件,因此您需要將其複製到應用程序的本地存儲文件夾中。我創建了一個StorageManagement類來在應用程序啓動時初始化我的數據庫。
public static class StorageManagement
{
public static async Task<bool> DoesFileExistAsync(string file)
{
try
{
await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(file);
return true;
}
catch
{
return false;
}
}
public static async void InitializeDatabaseAsync()
{
if (!DoesFileExistAsync("MyDb.sqlite").Result)
{
string databaseFile = Path.Combine(Windows.ApplicationModel.Package.Current.InstalledLocation.Path, @"Common\MyDb.sqlite");
StorageFile file = await StorageFile.GetFileFromPathAsync(databaseFile);
await file.CopyAsync(Windows.Storage.ApplicationData.Current.LocalFolder);
}
}
}
如果數據庫文件不在本地存儲文件夾中,只有這樣它纔會從公用文件夾複製文件。然後我可以使用本地存儲中的文件創建我的sqlite連接。
你有沒有在你的項目文件夾中創建這個「App_Data文件」文件夾?這是行不通的,因爲你只能直接訪問保存在獨立存儲中的應用程序文件,或者你需要用戶從使用filepicker選擇該文件,然後才能在應用
是的,我認爲這將是如此。我能夠將文件上的構建操作屬性設置爲「內容」,這使我可以讀取。在我的情況下沒有幫助。 – Nitesh
一種方法是構建訪問一個uri文件,然後用它來訪問文件。
var uri = new Uri("ms-appdata:///local/app_data/database.data");
var file = await StorageFile.GetFileFromApplicationUriAsync(uri);
另一種方法是使用ApplicationData類。
var folder = await ApplictionData.Current.LocalFolder.GetFolderAsync("app_data");
var file = await folder.GetFileAsync("database.data");
我有一個類似的問題。我需要從文本文件中讀取JSON,作爲應用程序的一部分,作爲中間步驟打包,然後才能生成JSON服務。
使用本地存儲是不是這裏的答案,InstalledLocation是東西用於讀取打包爲應用程序的一部分文件,像這樣:
var file = await Package.Current.InstalledLocation.GetFileAsync("app_data\\tempjsonfile.json");
String json = await FileIO.ReadTextAsync(file);
這從一個JSON文件在App_Data目錄中讀取我在項目中創建。基本要點:在JSON文件的屬性中,將構建操作設置爲「內容」並將「複製到輸出目錄」設置爲「始終複製」。
- 1. Windows 8商店應用程序C++文件訪問
- 2. 從Windows 8商店應用項目文件夾移動App.xaml
- 3. 如何訪問「應用程序」文件夾中的項目
- 4. 從WP應用程序的項目文件夾訪問文件
- 5. Windows 8商店應用程序XmlWriter不會寫任何文件
- 6. 從Windows應用商店項目中的文件夾打開PDF文件C#
- 7. 如何在Windows應用商店應用中複製文件夾
- 8. 如何從我的Windows應用商店應用項目中的資產文件夾中獲取文件?
- 9. 如何在Windows 8商店應用程序中下載和提取.tar.gz文件
- 10. Windows應用商店應用程序包中的額外文件
- 11. Windows商店應用程序對於XML文件中的每個項目
- 12. 訪問包括應用程序文件夾中的文件夾。
- 13. 從Windows應用商店應用訪問文件
- 14. 從Windows 8商店應用程序(WinRT)訪問智能卡
- 15. 如何訪問Windows 8商店應用中的IMAP?
- 16. IIS6訪問應用程序主文件夾的父文件夾
- 17. Windows 8商店應用程序和Linq
- 18. 如何從Windows 8.1商店應用程序運行.exe文件?
- 19. 如何在Windows應用商店應用測試項目中使用文件?
- 20. Base64ToImage在Windows 8商店應用程序
- 21. 如何在Windows 8應用程序中顯示assets文件夾?
- 22. 訪問JavaScript中的本地Json文件Windows 8應用程序
- 23. Windows 8商店應用
- 24. Windows 8商店 - 調試應用程序從商店下載
- 25. 遷移Windows 8商店的應用程序8.1的SQLite問題
- 26. FileLoadException在訪問項目應用程序文件夾中的程序集dll時
- 27. 如何在商店文件夾中使用商店定義
- 28. PhoneGap在Windows 8中訪問文件系統應用程序
- 29. Windows應用商店8.1文件系統訪問
只要看看這段代碼,DoesFileExistAsync(「MyDb.sqlite」)。結果將導致阻塞當前線程並且不是異步的。 –