欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > 内容正文

[深入浅出WP8.1(Runtime)]应用文件的URI方案,wp8.1uri

来源: 开发者 投稿于  被查看 14997 次 评论:37

[深入浅出WP8.1(Runtime)]应用文件的URI方案,wp8.1uri


6.2.4 应用文件的URI方案

    在上文我们获取文件的方式都是通过应用程序的三个跟目录的文件夹对象来获取文件夹对象和文件对象,那么我们这一小节来讲解一种新的获取文件对象的方式,这种方式就是通过Uri地址来获取。应用程序存储里面的文件夹和文件其实和我们平时在Windows电脑上看到的文件的目录是一样的,只不过它们是在存储里面,你并不能很直观地看到他们的路径,当然我们还是可以通过StorageFile类的Path属性来查看到文件的保存路径,例如我们查看一个在LocalFolder文件夹的testfile.txt文件的路径会如下所示:

C:\Data\Users\DefApps\APPDATA\Local\Packages\6c522da7-81ed-4463-b58a-584c89af115e_thbaz9fn8knhr\LocalState\testfile.txt

    三个根目录文件夹所对应的保存路径的格式分别如下所示:

    (1)LocalFolder文件夹的保存路径格式:

    %USERPROFILE%\APPDATA \Local\Packages\{PackageId}\LocalState

    (2)RoamingFolder文件夹的保存路径格式:

    %USERPROFILE%\APPDATA \Local\Packages\{PackageId}\RoamingState

    (3)TemporaryFolder文件夹的保存路径格式:

    %USERPROFILE%\APPDATA \Local\Packages\{PackageId}\TempState

    那本获取到的这个路径其实并不能作为访问文件的路径来使用,访问文件的路径需要使用本地文件夹的ms-appdata的URI方案。LocalFolder文件夹对应的是“ms-appdata:///local/”,RoamingFolder文件夹对应的是“ms-appdata:///roaming/”,TemporaryFolder文件夹对应的是 “ms-appdata:///temp/”。我们可以通过StorageFile类的静态方法GetFileFromApplicationUriAsync来根据URI读取文件,下面的示例代码是使用了ms-appdata的URI方案来获取在LocalFolder文件夹里面的AppConfigSettings.xml文件。

    var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/AppConfigSettings.xml"));

    在这种通过URI访问文件的方案里面我们还需要注意一个事情,那就是新文件和文件夹的路径在 URI 方案名称的最后一个斜杠后面不能超过 185 个字符。

下面给出通过URI读取文件的示例:该示例演示了创建一个文件之后获取其绝对的路径,读取文件的时候是通过URI方案读取文件。

代码清单6-6:通过URI读取文件(源代码:第6章\Examples_6_6)

MainPage.xaml文件主要代码
------------------------------------------------------------------------------------------------------------------
    <StackPanel>
        <TextBox Header="文件信息:" x:Name="info" TextWrapping="Wrap"></TextBox>
        <Button x:Name="bt_save" Content="创建文件" Width="370" Click="bt_save_Click"></Button>
        <Button x:Name="bt_read" Content="通过Uri读取文件" Width="370" Click="bt_read_Click"></Button>       
    </StackPanel>
MainPage.xaml.cs文件主要代码
------------------------------------------------------------------------------------------------------------------
    // 文件名
    private string fileName = "testfile.txt";
    // 创建文件
    private async void bt_save_Click(object sender, RoutedEventArgs e)
    {
        if (info.Text != "")
        {
            // 获取本地文件夹根目录文件夹
            IStorageFolder applicationFolder = ApplicationData.Current.LocalFolder;
            // 在文件夹里面创建文件,如果文件存在则替换掉
            IStorageFile storageFile = await applicationFolder.CreateFileAsync(fileName, CreationCollisionOption.OpenIfExists);
            // 使用FileIO类把字符串信息写入文件
            await FileIO.WriteTextAsync(storageFile, info.Text);
            await new MessageDialog("保存成功,文件的路径:" + storageFile.Path).ShowAsync();   
        }
        else
        {
            await new MessageDialog("内容不能为空").ShowAsync();
        }
    }
    // 读取文件
    private async void bt_read_Click(object sender, RoutedEventArgs e)
    {
        // 读取文件的文本信息
        string text;
        try
        {
            // 通过Uri获取本地文件
            var storageFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/" + fileName));
            // 打开文件获取文件的数据流
            IRandomAccessStream accessStream = await storageFile.OpenReadAsync();
            // 使用StreamReader读取文件的内容,需要将IRandomAccessStream对象转化为Stream对象来初始化StreamReader对象
            using (StreamReader streamReader = new StreamReader(accessStream.AsStreamForRead((int)accessStream.Size)))
            {
                text = streamReader.ReadToEnd();
            }
        }
        catch (Exception exce)
        {
            text = "文件读取错误:" + exce.Message;
        }
        await new MessageDialog(text).ShowAsync();
    }

本文来源于《深入浅出Windows Phone 8.1 应用开发》

源代码下载:http://vdisk.weibo.com/s/zt_pyrfNHb99O

欢迎关注我的微博@WP林政   微信公众号:wp开发(号:wpkaifa)

WP8.1技术交流群:372552293


我要抢第一

你已经不行了,只抢道了第三
 

c语言程序设计<在HTML文件中提取电子邮件地址>急用,要用C语言编

目录
第1章Java语言基础知识1
1.1Java语言与面向对象的程序设计1
1.1.1面向对象的程序设计思想1
1.1.2Java语言的特点3
1.1.3Java类库4
1.2Java程序概述4
1.2.1Java开发环境4
1.2.2Application举例7
1.2.3Applet举例8
1.2.4Servlet举例10
1.2.5JSP和JavaBean举例13
1.3基本数据类型与表达式14
1.3.1变量与常量14
1.3.2基本数据类型15
1.3.3表达式与运算符16
1.3.4类型转换20
1.4数组的概念21
1.5数组的创建和引用21
1.5.1数组的声明21
1.5.2数组的创建21
1.5.3数组元素的初始化22
1.5.4数组的引用22
1.5.5多维数组23
1.6本章小结26
习题26

第2章类与对象的基本概念27
2.1面向对象的程序设计方法概述27
2.1.1抽象27
2.1.2封装28
2.1.3继承28
2.1.4多态29
2.2类与对象29
2.2.1类的声明30
2.2.2对象的声明与引用31
2.2.3数据成员32
2.2.4方法成员38
2.2.5类的组织——包的概念43
2.2.6类的访问控制45
2.2.7类成员的访问控制45
2.3对象初始化和回收47
2.3.1构造方法47
2.3.2内存回收技术50
2.4应用举例51
2.4.1声明BankAccount类51
2.4.2声明toString()方法52
2.4.3声明存取款方法53
2.4.4使用DecimalFormat类54
2.4.5声明类方法生成特殊的实例54
2.4.6声明类变量55
2.5UML简介57
2.5.1类图58
2.5.2对象图60
2.6本章小结60
习题61

第3章类的方法62
3.1方法的控制流程62
3.1.1if选择结构63
3.1.2switch选择结构64
3.1.3for循环结构67
3.1.4while语句68
3.1.5do?while语句69
3.1.6break语句69
3.1.7continue语句72
3.2异常处理简介74
3.2.1异常处理的意义74
3.2.2错误的分类75
3.2.3异常的处理77
3.2.4生成异常对象83
3.2.5声明自己的异常类84
3.3方法的重载85
3.4本章小结87
习题87

第4章类的重用88
4.1类的继承88
4.1.1继承的概念88
4.1.2继承的语法89
4.1.3隐藏和覆盖92
4.1.4有继承时的构造方法96
4.1.5应用举例98
4.2Object类99
4.3终结类与终结方法103
4.3.1终结类103
4.3.2终结方法104
4.4抽象类105
4.4.1抽象类的声明105
4.4.2抽象方法106
4.5类的组合108
4.5.1组合的语法108
4.5.2组合与继承的比较109
4.5.3组合与继承的结合110
4.6包的应用112
4.6.1Java基础类库概述112
4.6.2自定义包122
4.6.3JAR文件123
4.7本章小结126
习题126

第5章接口与多态128
5.1接口128
5.1.1接口的作用及语法128
5.1.2实现接口130
5.1.3多重继承132
5.1.4接口的扩展134
5.2塑型136
5.2.1塑型的概念136
5.2.2塑型的应用137
5.2.3方法的查找138
5.3多态的概念139
5.3.1多态的目的140
5.3.2绑定的概念141
5.4多态的应用......余下全文>>
 

相关文章

    暂无相关文章
相关频道:

用户评论