Win10 UWP 文件读写浅谈(C++)

UWP uwpbox 3190℃ 0评论

UWP 应用在文件读写安全方面做了很多的限制,有win32开发经历的人都知道几种不同的文件读取方式,有c语言的fopen 系列,c++的 fstream相关到系统API CreateFile 相关,都可以方便的读取绝大部分目录下的内容。但是在UWP上着些方式能读取到的地方进一步缩小,可以看到微软在这方面一路走来,API的接口是越收越紧。从奔放的西部牛仔变成了小娘子了。

UWP应用透过上面所述的方式现在能读取到的目录就只剩下应用的安装目录和ApplicationData 目录了,而安装目录只能有读取权限,也就是说文件必须在安装的时候就存在了,在程序中可以可以通过以下方式进行尝试。首先你确认添加好  Windows.Foundation.UniversalApiContract   引用

通过上面的方式就可以获取到两种目录下的文件,你也可以先在 path 那打个断点知道ApplicationData 目录在哪,再把文件拷贝进去进行尝试。注意:直接用这个通过断点获取到的目录作为参数用常见的fopen等 方式打开文件会打开失败,错误相关代码参见https://msdn.microsoft.com/zh-cn/library/t3ayayh1(VS.80).aspx

那么问题来了,既然以前的方式都不好使了,应用总要读取文件的吧,微软的Office 系列还能读取文档了。总不能州官放火不许百姓点灯把。微软为了防止应用恶意读写可能不属于自己的问题 特意再提供了一套接口,这就是 上面代码中出现的那个  LocalFolder 的类型  StorageFile 。透过它就可以读取文件内容了。别高兴的太早,这玩意也不是随便就能访问其他的目录,StorageFile 还是只能在应用自己目录玩。

这里不详细说StorageFile 的具体用法,这样创建的文件其实还是在应用自己的目录下面了。那到底怎样才能像office那样读取其他地方的文件了,这里微软又给造出了个新玩意,FileOpenPicker。

透过这个玩意,微软就能控制应用不能随便去访问其他地方的文件了,只能通过用户选了某个文件,你在应用中才能打开。到这里只说了在UWP应用中读取文件与WIN32操作方式的一些变法。具体怎么操作文件留到后面在接着说。

其实对于权限的控制,这里只是一小点。总的来说奔放的日子在这里已经难见到了。

参考文档:

1 、http://blogs.msdn.com/b/wsdevsol/archive/2012/12/05/stray-from-the-path-stick-to-the-storagefile.aspx

2、https://msdn.microsoft.com/en-us/library/windows/apps/xaml/mt185399.aspx

转载请注明:UWPBOX » Win10 UWP 文件读写浅谈(C++)

喜欢 (2)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址