如何访问项目文件夹中的文件 - Windows 8商店应用程序?

时间:2012-09-28 18:29:30

标签: sqlite windows-8 file-access

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

4 个答案:

答案 0 :(得分: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连接。

答案 1 :(得分: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");

答案 2 :(得分:0)

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

答案 3 :(得分: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文件的属性中,将“构建操作”设置为“内容”,将“复制到输出目录”设置为“始终复制”。