当前位置: 首页 > news >正文

UWP 中的各种文件路径(用户、缓存、漫游、安装……)

UWP 提供了多种不同文件路径访问方式,对应到不同的文件路径中。可能我们只是简单用 ApplicationData.Current 获取一下可以读写的路径便能应付我们应用日常所需的各种文件读写需求,不过,UWP 还提供了更多的路径选项。

本文将和你一起总结 UWP 中的各种各样的路径。


本文内容

    • UWP 中的路径种类
    • ApplicationData
    • Package.InstalledLocation
    • 特殊文件夹

UWP 中的路径种类

UWP 中可访问的路径有这些:

  • ApplicationData
    • 用于储存应用的各种数据
  • Package.InstalledLocation
    • 提供对应用程序包中各种文件的访问
  • 特殊文件夹
    • 提供用户文档、用户收藏夹等特殊文件夹的访问

ApplicationData

ApplicationData 提供应用程序自己创建的数据的读写能力。它包含这些文件夹:

  • Local: 储存在设备上,可被云端备份,在更新之后此数据保留
  • LocalCache: 储存在当前设备上,不备份,在更新后此数据保留
  • SharedLocal: 储存在设备上,为所有用户共享
  • Roaming: 对于同一个用户,会存在于安装了此应用的所用设备中
  • Temporary: 允许操作系统在任何时刻删除的临时文件

在智能感知提示的帮助下,你也可以找到对应的这几个文件夹:

在这里插入图片描述
▲ ApplicationData 的智能感知提示

这些不同的文件夹有着不同建议的用途。Local 文件夹,用来储存用户产生的数据(例如用户创建的文档等);这部分数据在进行备份的时候会被备份下来。相比之下,LocalCache 和 Temporary 是不受备份影响的。

额外的,

Package.InstalledLocation

应用程序可以访问安装后程序包所在的路径,使用 Package.Current.InstalledLocation 即可获取到应用程序包所在路径。

当然,这部分的路径有更多的快捷访问方式,比如 Uri 以 / 开头,就是访问程序包所在路径:

var uri = new Windows.Foundation.Uri("/samples/logo.png");

还可以以 ms-appx:/// 协议开头:

var uri = new Windows.Foundation.Uri("ms-appx:///samples/logo.png");
var file = Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri);

特殊文件夹

特殊文件夹可以通过 KnownFolders 类型获取,可以获取到照片、图片、音乐、视频等文件夹。

  • KnownFolders Class (Windows.Storage) - UWP app developer - Microsoft Docs

我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

相关文章:

  • 使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(解析篇)
  • 使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(概念篇)
  • csproj 文件中那个空的 NuGetPackageImportStamp 是干什么的?
  • C#/.NET 中 Thread.Sleep(0), Task.Delay(0), Thread.Yield(), Task.Yield() 不同的执行效果和用法建议
  • WPF 中那些可跨线程访问的 DispatcherObject(WPF Free Threaded Dispatcher Object)
  • 在 Visual Studio Code 中为代码片段(Code Snippets)添加快捷键
  • 在 Visual Studio 中使用 EditorConfig 统一代码风格(含原生与插件)
  • 在 Visual Studio Code 中添加自定义的代码片段
  • 用 dotTrace 进行性能分析时,Timeline 打不开?无法启动进程?也许你需要先开启系统性能计数器的访问权限
  • 了解 .NET/C# 程序集的加载时机,以便优化程序启动性能
  • git 如何更可靠地解决冲突?
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • 文件被占用?系统自带的“资源监视器(resmon)”也能帮你找到占用它的真凶
  • Windows 系统文件资源管理器的命令行参数(如何降权打开程序,如何选择文件)
  • 为 .NET 各种开发工具设置网络代理,提升在大陆的网络性能
  • C++11: atomic 头文件
  • CSS魔法堂:Absolute Positioning就这个样
  • es6--symbol
  • ES6系统学习----从Apollo Client看解构赋值
  • jquery ajax学习笔记
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Markdown 语法简单说明
  • Netty源码解析1-Buffer
  • 从伪并行的 Python 多线程说起
  • 机器学习 vs. 深度学习
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 为视图添加丝滑的水波纹
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 整理一些计算机基础知识!
  • # C++之functional库用法整理
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (四)图像的%2线性拉伸
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)VirtualBox安装增强功能
  • (转)C#调用WebService 基础
  • (转)Sql Server 保留几位小数的两种做法
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .net core 6 集成和使用 mongodb
  • .NET gRPC 和RESTful简单对比
  • .net wcf memory gates checking failed
  • .Net 高效开发之不可错过的实用工具
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net和php怎么连接,php和apache之间如何连接
  • .NET中 MVC 工厂模式浅析
  • .Net中间语言BeforeFieldInit
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • []指针
  • [1]-基于图搜索的路径规划基础
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [C++参考]拷贝构造函数的参数必须是引用类型
  • [delphi]保证程序只运行一个实例
  • [Flutter]打包IPA