UWP程序和Winform差异还是蛮大的,UWP毕竟是倾向于移动客户端Application开发,所以权限问题值得被画一下重点。在UWP中,app不能再随随便便访问客户端的文件系统,必须要通过获得用户的同意才可以。UWP的Desktop应用还是这样的,所以刚从Winform转过来UWP我确实很不适应。

默认情况下UWP可以访问程序的安装目录(读写), 而且不需要用户授权。其他位置的文件读写都需要用户的授权。比如在用户电脑本地有个文件C:\temp\aa.txt, 你用System.IO.File.Exists(@"c:\temp\aa.txt"), 会一直返回False,明明文件就在那里,为什么会返回false?如果你用FileStream.open(@"c:\temp\aa.txt", FileMode.Open, FileAccess.Read)打开文件,一定会报错。为什么呢?

根源在于,默认情况下,我们的程序是没有访问C:\temp\aa.txt的权限的,所以会有以上的错误。

那我们在UWP下面如何读写文件呢?当然是通过用户授权呀,UWP提供了FileOpenPicker和FileSavePicker, FolderPicker让用户指定和选择文件或者文件夹。用户选择之后,我们就可以访问了,当然访问的方式和以前的System.IO不一样了,我到现在还不是很清楚UWP专用的文件读写方法,所以一直尝试用System.IO下面的StreamReader和StreamWriter读写文件。其实也是可以的,下面就是具体的方法。

先贴上完整Code。

文件读取:需要通过FileOpenPicker获取文件的StorageFile类型,然后打开为Stream,再传递个StreamReader,就可以像以前一样读取了

文件写入:需要通过FileSavePicker获取文件的StorageFile类型,然后打开为Stream, 传递给StreamWriter, 来读取,记得StorageFile打开Stream的时候为OpenStreamForWriteAsync().

UWP里面有很多...Async()异步方法,需要和await一起使用。具体使用见其他文章。

注意:下面的code所在的函数前面需要async修饰,要不然会报错

            //Code sample: open files with FileOpenPicker and read with StreamReaderFileOpenPicker filePicker = new FileOpenPicker();filePicker.FileTypeFilter.Add(".txt");filePicker.ViewMode = PickerViewMode.List;StorageFile rFile = await filePicker.PickSingleFileAsync();if (rFile != null){StatusLabel.Text = CurrDataFileName = rFile.Path;StreamReader sr = new StreamReader(await rFile.OpenStreamForReadAsync());StatusLabel.Text = sr.ReadLine();sr.Close(); sr.Dispose();}//Code sample: open files with FileSavePicker and write with StreamWriterFileSavePicker picker = new FileSavePicker();picker.DefaultFileExtension = ".txt";picker.FileTypeChoices.Add("Plain Text", new List<string>() { ".txt" });picker.SuggestedFileName = "New Document";picker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;StorageFile wFile = await picker.PickSaveFileAsync();if(wFile != null){StreamWriter sw = new StreamWriter(await wFile.OpenStreamForWriteAsync());sw.WriteLine("Data from UPW");sw.Close();sw.Dispose();}

UWP 读写文件 StreamReader/StreamWriter相关推荐

  1. .Net C# StreamReader StreamWriter 文件读写

    开发中遇到需要读写标准格式文件时,我们可以使用StreamReader和StreamWriter这两个类来完成简单高效的读取,使用起来也非常方便.使用这两个类读写文件需要注意编码格式,默认是UTF8编 ...

  2. c#文件操作Streamwriter, streamreader的使用

    网上看到的觉得值得学习所以保存下来供以后参考 c文件操作 C使用StreamWriter类写入文件文件 C使用StreamReader类读取文件文件 网上看到的,觉得值得学习,所以保存下来供以后参考 ...

  3. c# 文件IO操作 StreamReader StreamWriter Split 使用

    StreamWriter(String,Boolean) 若要追加数据到该文件中,则为 true:若要覆盖该文件,则为 false. 如果指定的文件不存在,该参数无效,且构造函数将创建一个新文件. 例 ...

  4. C# 读写文件方法总结

    使用FileStream读写文件   文件头:   using System; using System.Collections.Generic; using System.Text; using S ...

  5. NET问答: 有最干净利落的读写文件方式吗?

    咨询区 ApprenticeHacker: 在 C# 中有很多种读写文件的方式 (文本文件,非二进制). 为了践行 do more, write less 的思想,现寻找一种最简单最少代码量的方式,因 ...

  6. C#中的StreamReader/StreamWriter

    在读写文件的过程中,Filestream只可以进行以字节为单位原始数据流进行读写操作,为此,C#中提供了功能更加强大的StreamReader/ StreamWriter来支持文件的读写. Strea ...

  7. C#中FileStream与StreamReader/StreamWriter区别

    区别 FileStream类不是静态类,表示在磁盘或网络路径上指向文件的流.这个类提供了在文件中读写字节的方法,但经常使用StreamReader或 StreamWriter执行这些功能.这是因为Fi ...

  8. C# IO流读写文件操作

    C# IO流读写文件操作 1.创建文件流 2.创建文件读写器 3.执行读写操作 4.关闭文件读写器和文件流 1.创建文件流 string filePath = AppDomain.CurrentDom ...

  9. FileStream读写文件

    FileStream读写文件 FileStream类:操作字节的,可以操作任何的文件 StreamReader类和StreamWriter类:操作字符的,只能操作文本文件. 1.FileStream类 ...

最新文章

  1. 手把手教你解析Resources.arsc
  2. 转载--How to Install VMware Tools on CentOS 6.3
  3. 蓝桥杯第七届决赛真题大全题解(java版本)
  4. sqlite+php+函数大全,PHP SQLite SQLite 函数_编程学问网
  5. 后端学习 - Java基础
  6. C# async/await异步编程深入理解
  7. pulse 去马赛克软件_去马赛克神器AI修图黑科技PULSE 有码变高清,AI一秒还原马赛克...
  8. Carlife Iphone IAP2连接与认证过程
  9. python全套教程百度网盘-Python最新全套视频教程百度网盘资源
  10. 【面经】TP-LINK 图像算法工程师(提前批)
  11. 滴滴新算法让你应对女友?道翰天琼认知智能机器人平台API接口大脑为您揭秘
  12. 5G高铁隧道覆盖方式分析
  13. oracle+utl_file+shanchu,utl_file.fremove
  14. <table> | HTML表格标签的定义与用法
  15. 《Spring Boot 实战派》--13.集成NoSQL数据库,实现Elasticsearch和Solr搜索引擎
  16. 搜索与回溯典型题目解析
  17. 如何修改网上下载word简历模板的照片
  18. A100 MIG 使用说明
  19. 怎样把php数组转换成字符串,php implode()
  20. Android开发中如何设置字体

热门文章

  1. 【Unity3D】反射和折射
  2. pandoc 可转换的格式_像专业人士一样使用Pandoc转换文档
  3. 使用Camera和Matrix实现3D效果
  4. 用Delphi写的一个完整OpenGL框架
  5. MarkDown代码块高亮
  6. 艺术与工程技术的交叉碰撞
  7. 最短路径(Dijkstra算法和Floyd算法)
  8. python写入列表数据_python列表写入数据库
  9. ShaderWeaver使用教程-使用马赛克
  10. 华硕手机打开调试模式