zoukankan      html  css  js  c++  java
  • UWP 更强大的文件获取能力

    默认情况下,通用 Windows 平台 (UWP) 应用可以访问特定文件系统位置。 应用也可以通过文件选取器或通过声明功能访问其他位置。

    在创建新的应用时,默认情况下你可以访问以下文件系统位置:

    1. 应用程序安装目录

    Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;

    或者直接指定需要的文件

    using Windows.Storage;            
    StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///file.txt"));

    2. 应用程序数据位置

     使用 ApplicationData 属性检索应用数据文件夹。

    using Windows.Storage;
    StorageFolder localFolder = ApplicationData.Current.LocalFolder;

    如果希望访问应用的漫游或临时文件夹,可以改用 RoamingFolder 或 TemporaryFolder 属性。

    3. 用户的“下载”文件夹

     你可以在用户的下载文件夹中创建文件

    using Windows.Storage;
    StorageFile newFile = await DownloadsFolder.CreateFileAsync("file.txt");

    你可以在用户的“下载”文件夹中创建子文件夹

    using Windows.Storage;
    StorageFolder newFolder = await DownloadsFolder.CreateFolderAsync("New Folder");

    4. 其它文件夹

    文档 DocumentsLibrary

    注意:必须将文件类型关联(该关联声明应用可以在此位置中访问的特定文件类型)添加到应用清单。

    你的应用使用此功能的情况:
    - 使用有效的 OneDrive URL 或资源 ID 促进跨平台离线访问特定 OneDrive 内容
    - 在离线时将打开的文件自动保存到用户的 OneDrive
    KnownFolders.DocumentsLibrary
    音乐 MusicLibrary
    另请参阅音乐、图片和视频库中的文件和文件夹
    KnownFolders.MusicLibrary
    图片 PicturesLibrary
    另请参阅音乐、图片和视频库中的文件和文件夹
    KnownFolders.PicturesLibrary
    视频 VideosLibrary
    另请参阅音乐、图片和视频库中的文件和文件夹
    KnownFolders.VideosLibrary
    可移动设备 RemovableDevices

    必须将文件类型关联(该关联声明应用可以在此位置中访问的特定文件类型)添加到应用清单。

    另请参阅访问 SD 卡
    KnownFolders.Re

     

    5. 更强大文件获取能力

    5. 更强大文件获取能力

    5. 更强大文件获取能力

    这功能几乎颠覆了UWP之前的历史,可以获取除了C盘以外所有的文件。

    但是,这个权限需要跟用户申请,用户手动确认了,你才可以。

    在执行你的超能力之前,你需要引导用户,给你的App权限:隐私——文件系统。

    使用代码直达:

    await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings:ms-settings:privacy-broadfilesystemaccess"));

    这样就打开了这么一个界面。

    然后就是配置一下你的Package.appxmanifest文件。用文本查看器打开

    添加下面的代码

    应该你的文件里面存在了IgnorableNamespace,你只需要把rescap加进去即可。

    <Package
      ...
      xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
      IgnorableNamespaces="uap mp uap5 rescap">
    ...
    <Capabilities>
        <rescap:Capability Name="broadFileSystemAccess" />
    </Capabilities>

    然后开始写代码测试:

            string dir = "D:\";
            string fileName = "sample.txt";
    
            private async void Read_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
            {
                StorageFile file = await StorageFile.GetFileFromPathAsync(Path.Combine(dir, fileName));
                TextBox_Content.Text = await FileIO.ReadTextAsync(file);
            }
    
            private async void Write_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
            {
                StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(dir);
                StorageFile file = await folder.CreateFileAsync(fileName, CreationCollisionOption.OpenIfExists);
                await FileIO.WriteTextAsync(file, TextBox_Content.Text);
            }

  • 相关阅读:
    openldap---ldapsearch使用
    自旋锁与相互排斥锁之抉择
    探索Android中的Parcel机制(上)
    我的Android开发相关文章
    SoftReference
    Windows7WithSP1/TeamFoundationServer2012update4/SQLServer2012
    机器学习中规则化和模型选择知识
    Java中System的详细用法
    Java中System的详细用法
    Java中System的详细用法
  • 原文地址:https://www.cnblogs.com/hupo376787/p/11995747.html
Copyright © 2011-2022 走看看