1

我有一个 Windows 8 商店应用程序,我在其中创建了一个“App_Data”文件夹。我添加了一个 sqlite 数据库文件,现在我正在尝试获取文件路径以创建连接。

4

4 回答 4

3

我将现有的 sqlite 文件添加到项目的 Common 文件夹中,并将 Build Action 设置为 Content。您无法写入此文件,因此您需要将其复制到应用程序的本地存储文件夹中。我创建了一个 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 连接。

于 2012-09-30T21:57:08.400 回答
1

一种方法是构造文件的 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");
于 2012-09-28T21:27:12.233 回答
0

您是否在项目文件夹中创建了这个“app_data”文件夹?这不起作用,因为您只能直接访问保存在应用程序隔离存储中的文件,或者您需要用户从使用文件选择器中选择文件,然后才能在应用程序中访问它

于 2012-09-28T19:09:14.560 回答
0

我遇到了类似的问题。在我们拥有生成 JSON 的服务之前,我需要从一个文本文件中读取 JSON,该文本文件将作为应用程序的一部分打包,作为中间步骤。

使用 LocalStorage 不是这里的答案,InstalledLocation 是用来读取作为应用程序一部分打包的文件的东西,如下所示:

    var file = await Package.Current.InstalledLocation.GetFileAsync("app_data\\tempjsonfile.json");
    String json = await FileIO.ReadTextAsync(file);

这从我在项目中创建的 app_data 目录中的 json 文件中读取。基本:在 JSON 文件的属性中,将构建操作设置为“内容”并将复制到输出目录设置为“始终复制”。

于 2013-01-13T19:10:50.287 回答