zoukankan      html  css  js  c++  java
  • 【万里征程——Windows App开发】文件&数据——获取文件属性

    这一节来看看获取文件属性吧,可以获取到文件名、类型、最近访问时间等等属性哦。

    创建Button和TextBlock

    下面这段代码呢,都很简单。

     <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
                <Button Width="200" Height="70" Name="btnGetProp" Content="获取文件属性" Click="btnGetProp_Click"/>            
                <TextBlock Name="tBlockProp" Margin="12" Width="480" FontSize="30"/>          
            </StackPanel>
        </Grid>
    </Page>

    在Click事件中,先获取到图片库,当然了,你可以获取其他地方,我电脑上的库文件中,就只有文档库和图片库有文件了。然后创建一个文件查询,最后将这些文件都赋给files。这里的var可谓是非常的强大啊。实例化一个StringBuilder对象来辅助输出信息那真是太完美不过了,我们在前面也常用到它。

    var folder = KnownFolders.PicturesLibrary;
    var fileQuery = folder.CreateFileQuery();
    var files = await fileQuery.GetFilesAsync();
    StringBuilder fileProperties = new StringBuilder();
    for (int i = 0; i < files.Count; i++)
    {
         StorageFile file = files[i];
         fileProperties.AppendLine("File name: " + file.Name);   
         fileProperties.AppendLine("File type: " + file.FileType);
         BasicProperties basicProperties = await file.GetBasicPropertiesAsync();
         string fileSize = string.Format("{0:n0}", basicProperties.Size);
         fileProperties.AppendLine("File size: " + fileSize + " bytes");
         fileProperties.AppendLine("Date modified: " + basicProperties.DateModified);
         fileProperties.AppendLine(" ");
    }
    tBlockProp.Text = fileProperties.ToString();

    这样一来就完成对Name、FileType、Size和DateModified属性的获取,但还有一类属性,则比较难以获取,它们就是“扩展属性”。

    List<string> propertiesName = new List<string>();
    propertiesName.Add("System.DateAccessed");
    propertiesName.Add("System.FileOwner");
    IDictionary<string, object> extraProperties = await file.Properties.RetrievePropertiesAsync(propertiesName);
    var propValue = extraProperties[dateAccessedProperty];
    if (propValue != null)
         fileProperties.AppendLine("Date accessed: " + propValue);
    propValue = extraProperties[fileOwnerProperty];
    if (propValue != null)
         fileProperties.AppendLine("File owner: " + propValue);

    最后将fileProperties传递给TextBlock即可。

    tBlockProp.Text = fileProperties.ToString();

    最后调试App,就会像下图一样了。

    这里写图片描述

    但是如你所见,文件名太长了却无法自动换行,而且数据也显示不完整。改改XAML中的TextBlock即可。TextWrapping属性设置为Wrap,则可以换行;将TextBlock添加到ScrollViewer内则会显示出一个滚动条。

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
                <Button Width="200" Height="70" Name="btnGetProp" Content="获取文件属性" Click="btnGetProp_Click"/>
                <ScrollViewer>
                    <TextBlock Name="tBlockProp" Margin="12" Width="480" FontSize="30" TextWrapping="Wrap"/>
                </ScrollViewer>
            </StackPanel>
        </Grid>

    这里写图片描述

    那么这一节就结束咯。下一篇再见!共同努力。



    为使本文得到斧正和提问,转载请注明出处:
    http://blog.csdn.net/nomasp

    邮箱及Skype:nomasp@outlook.com
    Facebookhttps://www.facebook.com/yuwang.ke
    CSDN博客http://blog.csdn.net/nomasp
    新浪微博http://weibo.com/nomasp

  • 相关阅读:
    ubuntu20.04安装教程TLS,ubuntu安装教程20.04
    ubuntu20.04安装教程,ubuntu详细安装教程20.04
    ubuntu20.04安装教程,ubuntu20.04图文安装教程
    ubuntu20.04安装教程,ubuntu详细安装教程20.04
    ubuntu20.04安装教程,ubuntu安装教程20.04
    ubuntu19.10安装搜狗输入法,ubuntu19.10安装中文输入法
    ubuntu20.04安装搜狗输入法,ubunru安装搜狗输入法中文输入法拼音
    前端实现实时通讯
    移动端1px边框的实现
    利用js自动触发一个a标签的下载事件
  • 原文地址:https://www.cnblogs.com/NoMasp/p/4483268.html
Copyright © 2011-2022 走看看