none
win8 store app读取本地文件问题 RRS feed

  • 问题

  • 新手一枚,想请教一下win8 store app中最基本的读取本地文件问题,自己老是出错><

    我在程序包目录下有一个Data文件夹,文件夹中有一个test.db文件,想读取这个文件,用的代码是

    var uri = new System.Uri("ms-appx:///Data/test.db");
    Windows.Storage.StorageFile file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri);
    SQLiteConnection conn = new SQLiteConnection(file.Path);

    可是每次运行到第二句就会中断,提示

    “System.IO.FileNotFoundException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理

    其他信息: 系统找不到指定的文件。 (异常来自 HRESULT:0x80070002)

    此时监视file的值也是Null,请教一下该如何解决?

    2014年7月28日 7:11

答案

  • 你好 Frank7777,

    请再检查你的安装目录下是否存在这个文件,一般这个错误的原因是文件不存在。同时你也说了file值为null,也就是说并未获取到文件。

    Simon建议的方法中,参数为 test.db 并非是Data/test.db 是否是导致错误的原因? 你应该先获取到Data文件夹,然后再去获取test.db文件。

    StorageFolder folder= ApplicationData.Current.LocalFolder;
    StorageFolder dataFolder = await folder.GetFolderAsync("Data");
    Windows.Storage.StorageFile file = await dataFolder.GetFileAsync("test.db");

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.


    2014年7月30日 5:35
    版主
  • 我刚刚这边测试了下,是可以访问的,那你看看对应的本地存储里有没有这个文件?或者贴代码再看一看
    2014年7月28日 9:37

全部回复

  • 您好,Frank7777,最好把文件放到本地存储里去操作,因为读写文件对程序目录是有权限的,如果在你的程序里面是写不了文件的,只能读取。建议使用本地存储,你可以这样改你的代码:

        StorageFolder folder= ApplicationData.Current.LocalFolder;
        Windows.Storage.StorageFile file = await folder.GetFileAsync("test.db");

    ///do some thing

    2014年7月28日 8:44
  • 您好,感谢回复,可是我按照您的帮助修改了代码,同样的问题依然出现,可否有其他的解决办法?

    • 已编辑 Frank7777 2014年7月28日 9:27 修正回复
    2014年7月28日 9:25
  • 我刚刚这边测试了下,是可以访问的,那你看看对应的本地存储里有没有这个文件?或者贴代码再看一看
    2014年7月28日 9:37
  • 你好 Frank7777,

    请再检查你的安装目录下是否存在这个文件,一般这个错误的原因是文件不存在。同时你也说了file值为null,也就是说并未获取到文件。

    Simon建议的方法中,参数为 test.db 并非是Data/test.db 是否是导致错误的原因? 你应该先获取到Data文件夹,然后再去获取test.db文件。

    StorageFolder folder= ApplicationData.Current.LocalFolder;
    StorageFolder dataFolder = await folder.GetFolderAsync("Data");
    Windows.Storage.StorageFile file = await dataFolder.GetFileAsync("test.db");

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.


    2014年7月30日 5:35
    版主