zoukankan      html  css  js  c++  java
  • Windows Store App 应用程序存储空间

    与上面介绍的三种不同应用程序数据存储类型对应,应用程序有三种数据存储空间,分别为本地应用程序数据存储空间、漫游应用程序数据存储空间和临时应用程序数据存储空间。通过使用ApplicationData类的LocalFolder属性即可获取本地应用程序数据存储空间的根文件夹,而漫游和临时应用程序数据存储空间的根文件夹则可分别通过该类的RoamingFolderTemporaryFolder属性来获取,在获得数据存储空间的根文件夹之后,可以对相应存储空间进行操作。

    下面以本地应用程序数据存储空间为例(以下简称本地应用存储空间),演示如何在本地应用存储空间中创建、删除文件和文件夹以及如何写入和读取文件内容。

    Visual Studio 2012中新建一个Windows应用商店的空白应用程序项目,并命名为LocalStorageApp。双击打开项目的MainPage.xaml文件,在Grid元素中添加以下代码,用于布局前台界面。

    <StackPanel Orientation="Horizontal">

        <StackPanel>

            <TextBlock x:Name="CreateFolderTextBlock" TextWrapping="Wrap"  Width="600" FontSize="30" Height="73" Margin="80,40,0,0"/>

            <TextBlock x:Name="DeleteFolderTextBlock" TextWrapping="Wrap"   Width="600" FontSize="30" Height="73" Margin="80,0,0,0"/>

            <TextBlock x:Name="CreateFileTextBlock" TextWrapping="Wrap"  Width="600" FontSize="30" Height="73" Margin="80,10,0,0"/>

            <TextBlock x:Name="DeleteFileTextBlock" TextWrapping="Wrap"   Width="600" FontSize="30" Height="73" Margin="80,20,0,0"/>

            <TextBlock x:Name="WriteFileTextBlock" TextWrapping="Wrap"  Width="600" FontSize="30" Height="73" Margin="80,20,0,0"/>

            <TextBlock x:Name="ReadFileTextBlock" TextWrapping="Wrap"   Width="600" FontSize=" 30" Height=" 120" Margin="80,10,0,0"/>

        </StackPanel>

    <StackPanel Width=" 300" Margin="30,0">

            <Button Content="创建文件夹" Click="CreateFolder_Click" FontSize="30" Margin="0,30,0,0"/>

            <Button Content="删除文件夹" Click="DeleteFolder_Click" FontSize="30" Margin="0,30,0,0"/>

            <Button Content="创建文件" Click="CreateFile_Click" FontSize="30" Margin="0,30,0,0" Width="192"/>

            <Button Content="删除文件" Click="DeleteFile_Click" FontSize="30" Margin="0,30,0,0"/>

            <Button Content="写入文件" Click="WriteFile_Click" FontSize="30" Margin="0,30,0,0" Width="192"/>

            <Button Content="读取文件" Click="ReadFile_Click" FontSize="30" Margin="0,30,0,0" Width="192"/>

        </StackPanel>

    </StackPanel>

    上面的代码为应用添加了六个按钮和文本块,六个按钮分别为“创建文件夹”、“删除文件夹”、“创建文件”、“删除文件”、“写入文件”和“读取文件”,这些按钮都用来对本地应用存储空间进行操作,其中“创建文件夹”按钮用来在本地应用存储空间中新建文件夹,“删除文件夹”按钮用来对新建文件夹进行删除;“创建文件”按钮用来在本地应用存储空间中新建文件,与之对应,“删除文件”按钮用来删除文件;“写入文件”按钮用来对本地应用存储空间中的文件进行写入操作,“读取文件”按钮则用来将文件中的内容读取出来,六个文本块全部用于显示相应的提示信息。

    布局好前台界面后,接下来陆续为这六个按钮添加单击事件处理方法,实现按钮各自的功能,由于各个按钮的处理方法都需要获得本地应用存储空间的根文件夹,为了简化代码同时方便各个方法的使用,这里在MainPage.xaml.cs文件中的MainPage类中定义了三个成员变量localFolderfolderfile,代码如下所示:

    StorageFolder localFolder = ApplicationData.Current.LocalFolder;

    StorageFolder folder = null;

    StorageFile file = null;

    其中localFolder用于保存本地应用存储空间的根文件夹,folder用于保存新建的文件夹,而file用来保存新建的文件。

    定义了类成员变量后,下面首先来看创建文件夹”按钮的功能实现,实现此按钮功能的单击事件处理方法如下所示

    async private void CreateFolder_Click(object sender, RoutedEventArgs e)

    {

    //新建文件夹

        folder = await localFolder.CreateFolderAsync("myFolder", CreationCollisionOption.ReplaceExisting);

    //显示提示信息

        CreateFolderTextBlock.Text = "文件夹 " + folder.Name + " 创建成功!";

    }

    代码通过使用localFolder的异步方法CreateFolderAsync创建名为myFolder的文件夹,并在CreateFolderTextBlock文本块中显示提示信息。

    与之对应的“删除文件夹”按钮实现将新建的文件夹删除,其单击事件处理方法如下所示:

    async private void DeleteFolder_Click(object sender, RoutedEventArgs e)

    {

        if (folder != null)

        {

            await folder.DeleteAsync();

            DeleteFolderTextBlock.Text = "文件夹 " + folder.Name + " 删除成功!";

        }

        else DeleteFolderTextBlock.Text = "没有找到指定文件夹!";

    }

    方法首先判断folder是否为空,如果不为空则调用异步方法DeleteAsync删除folder,并在DeleteFolderTextBlock中显示删除成功的提示信息,否则显示“没有找到指定文件夹!”。

    “创建文件”按钮的单击事件处理方法与“创建文件夹”的很相似,只不过将调用的方法换成了CreateFileAsync,显示的提示信息略有不同而已,其代码如下所示:

    async private void CreateFile_Click(object sender, RoutedEventArgs e)

    {

    //新建文件

        file = await localFolder.CreateFileAsync("myFile", CreationCollisionOption.ReplaceExisting);

        CreateFileTextBlock.Text = "文件 " + file.Name + " 创建成功!";

    }

    “删除文件”按钮的单击事件处理方法与“删除文件夹”的也很相似,同样是首先判断file是否为空,如果file不为空,调用异步方法DeleteAsync,只不过这次方法调用的对象换成了file,代码如下所示:

    async private void DeleteFile_Click(object sender, RoutedEventArgs e)

    {

        if (file != null)

        {

            await file.DeleteAsync();

            DeleteFileTextBlock.Text = "文件 " + file.Name + " 删除成功!";

        }

        else DeleteFileTextBlock.Text = "没有找到指定文件!";

    }

    下面继续来实现写入文件”和“读取文件”按钮的功能,首先给出“写入文件”按钮的单击事件处理方法,代码如下所示

    async private void WriteFile_Click(object sender, RoutedEventArgs e)

    {

    //新建文件

        file = await localFolder.CreateFileAsync("myFile", CreationCollisionOption.OpenIfExists);

    //写入文件

        await FileIO.WriteTextAsync(file, "hello,I am a File!");

        WriteFileTextBlock.Text = "" + file.Name + "文件中写入 hello,I am a File!";

    }

    代码使用CreateFileAsync方法异步创建名为myFile的文件,并通过FileIO类的WriteTextAsync方法将文本写入到文件中,最后在WriteFileTextBlock文本块中显示提示信息。与之相对应的“读取文件”按钮实现将myFile文件中的内容读取出来,实现此功能的单击事件处理方法ReadFile_Click的代码如下所示。

    async private void ReadFile_Click(object sender, RoutedEventArgs e)

    {

        if (file != null)

        {

            String text = await FileIO.ReadTextAsync(file);

            ReadFileTextBlock.Text = "文件 " + file.Name + "读取成功!" + Environment.NewLine + Environment.NewLine + "读取的内容为:" + text.ToString();

        }

        else ReadFileTextBlock.Text = "没有找到指定文件!";

    }

    方法首先检查file是否为空,如果不为空说明myFile文件存在,那么使用FileIO类的ReadTextAsync方法异步读取myFile文件,并将读取到的内容连同提示信息一起显示在ReadFileTextBlock文本块中,否则显示“没有找到指定文件!”。

    运行应用程序,从上到下依次单击界面中的六个按钮,显示效果如图13-1所示。


    13-1 应用存储中文件与文件夹操作

    至此我们已经通过一个具体的应用示例,详细介绍了与本地应用存储空间有关的操作。

  • 相关阅读:
    SpringBoot笔记
    SpringBoot面试篇
    多线程篇
    Tomcat篇
    Redis篇
    Nginx篇
    JVM篇
    MySQL篇
    python ETL工具 pyetl
    python通用数据库操作工具 pydbclib
  • 原文地址:https://www.cnblogs.com/finehappy/p/4213342.html
Copyright © 2011-2022 走看看