Metro Style App开发快速入门 之文件访问操作示例

简介:

文件访问操作示例

最近在学习Win 8 Metro Style App的一些示例,接下来我写一下这段时间的学习感想。Win 8的最新版本是Window Consumer Preview 版本。Metro Style App的Demo中用了大量的异步操作。(使用async 和await)。

在Win8中,使用异步操作相当简单,与同步差不多,具体看运行的代码就知道了。

运行示例的环境是: Window 8 Consumer Preview  + Visual studio 11 Beta. 下载地址。 Window 8的安装不在此处介绍。

Metro style App 的Sample下载地址为。  下面是自己的操作后的一些感想:

1 在指定文件夹中创建指定类型的文件

async void  CreateFileBtn_Click( object  sender, RoutedEventArgs e)
{
     StorageFolder storageFolder = KnownFolders.DocumentsLibrary;
     StorageFile sampleFile = await storageFolder.CreateFileAsync( "Sample.txt" , CreationCollisionOption.ReplaceExisting);
 
}

 注意:

 A、将Docments Library勾上,这样才能访问C:\Users\userName\Documents文件夹。这里必须勾上,否则程序无法运行,没有访问权限。

B、添加文件类型(本例为txt文本文件)。这里我们可以添加文件访问的类型。如果没有将无法访问相关的文件。

 

2、写入数据。采用FileIO.WriteTextAsync方法。

void  WriteTextToTextFileBtn_Click( object  sender, RoutedEventArgs e)
{
     if  (sampleFile != null )
     {
         FileIO.WriteTextAsync(sampleFile, "Hello Test! " );
     }
 
}

  读取数据,采用FileIO.ReadTextAsync方法。

async void  ReadTextFromTextFileBtn_Click( object  sender, RoutedEventArgs e)
   {
       if  (sampleFile != null )
       {
           string  msg = await FileIO.ReadTextAsync(sampleFile);
       }
   }

 3、 用Bytes向文本写入数据

async void  WriteTextUseByteBtn_Click( object  sender, RoutedEventArgs e)
{
     if  (sampleFile != null )
     {
         string  Data = "Hello, world!" ;
         IBuffer buffer = GetBufferFromString(Data);
         await FileIO.WriteBufferAsync(sampleFile, buffer);
     }
 
 
}
 
IBuffer GetBufferFromString( string  str)
{
 
     using  (InMemoryRandomAccessStream stream = new  InMemoryRandomAccessStream())
     {
         using  (DataWriter write = new  DataWriter(stream))
         {
             write.WriteString(str);
             return  write.DetachBuffer();
         }
     }
}

 

 用Byte从文本中读出数据。

async void  ReadTesxUseByte_Click( object  sender, RoutedEventArgs e)
{
     if  (sampleFile != null )
     {
         IBuffer buffer = await FileIO.ReadBufferAsync(sampleFile);
         using  (DataReader read = DataReader.FromBuffer(buffer))
         {
             string  fileContent =  read.ReadString(buffer.Length);
         }
 
     }
}

 

4、 使用流向文件写入数据。

async void  WriteTextUseStreamBtn_Click( object  sender, RoutedEventArgs e)
{
     if  (sampleFile!= null )
     {
         using  (IRandomAccessStream writeStram = await sampleFile.OpenAsync(FileAccessMode.ReadWrite))
         {
             using  (DataWriter dataWrite = new  DataWriter(writeStram))
             {
                 dataWrite.WriteString( "Write Stream Text!" );
                 await dataWrite.StoreAsync();
                 await dataWrite.FlushAsync();
             }
         }
     }
}

 

 

使用流向文件read数据。

async void  ReadFromStreamBtn_Click( object  sender, RoutedEventArgs e)
{
     if  (sampleFile!= null )
     {
         using  (IRandomAccessStream readSteam = await sampleFile.OpenAsync(FileAccessMode.Read))
         {
             using  (DataReader dataReader = new  DataReader(readSteam))
             {
                 uint  numByteLoaded = await dataReader.LoadAsync(( uint )readSteam.Size);
                 string  fileContent = dataReader.ReadString(numByteLoaded);
                 
             }
         }
     }
}

 

 5、  拷贝文件。采用CopyAsync方法。

async void  CopyFileBtn_Click( object  sender, RoutedEventArgs e)
{
     if  (sampleFile!= null )
     {
         StorageFile sampleFileCopy = await sampleFile.CopyAsync(KnownFolders.DocumentsLibrary, "sample-copy.txt" , NameCollisionOption.ReplaceExisting);
     }
}

 

6、 删除文件,采用DeleteAsync方法。

async void  DeleteFileBtn_Click( object  sender, RoutedEventArgs e)
  {
      if  (sampleFile!= null )
      {
          await sampleFile.DeleteAsync();
          sampleFile = null ;
      }
  }

 

 总结:现在Windows 8 只是预览版,所以在发布之前可能会改变,但是我觉得基本思想应该是一样的。


本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2012/03/12/2391987.html,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
人工智能 文字识别 小程序
旅游社用什么工具收报名 + 资料?不开发 App 也能自动收集信息
本文探讨了旅游行业中报名信息收集的常见痛点及解决方案,重点介绍了二维码表单工具在提升信息收集效率、简化操作流程方面的优势。通过对比多种工具,分析其适用场景与实际应用逻辑,为一线旅游从业者提供高效、低成本的执行参考。
|
3月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
仓颉语言实战分享,教你如何用仓颉开发外卖App界面。内容包括页面布局、导航栏自定义、搜索框实现、列表模块构建等,附完整代码示例。轻松掌握Scroll、List等组件使用技巧,提升HarmonyOS应用开发能力。
|
3月前
|
IDE 开发工具 开发者
使用DevEcoStudio 开发、编译鸿蒙 NEXT_APP 以及使用中文插件
# 使用DevEcoStudio 开发、编译鸿蒙 NEXT_APP 以及使用中文插件 #鸿蒙开发工具 #DevEco Studio
290 1
|
3月前
|
人工智能 小程序 JavaScript
【一步步开发AI运动APP】十、微调优化内置运动分析器,灵活适配不同的应用场景
本文介绍了如何通过【一步步开发AI运动APP】系列博文,利用`ISportOptimizer`对内置运动分析器进行微调优化。相比小程序,APP框架(如uni-app)因技术差异,无法直接修改运动分析器参数,因此提供了统一的优化机制。开发者可通过`ISportOptimizer`获取和更新检测规则、动作样本等,灵活适应不同场景需求,如全民运动赛事的宽松模式或学生体测的严格模式。文中还提供了示例代码,展示如何对具体运动项目(如仰卧起坐)进行优化。需要注意的是,微调优化适用于标准动作的小范围调整,若动作变化过大(如花式跳绳),可期待后续自定义扩展功能。
|
3月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:健身App
本期分享一个健身App首页的布局实现,顶部采用Stack容器实现重叠背景与偏移效果,列表部分使用List结合Scroll实现可滚动内容。代码结构清晰,适合学习HarmonyOS布局技巧。
|
3月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:银行App
仓颉语言银行App项目分享,页面布局采用List容器,实现沉浸式体验与模块化设计。顶部资产模块结合Stack与Row布局,背景图与内容分离,代码清晰易懂;功能按钮部分通过负边距实现上移效果,圆角仅保留顶部;热门推荐使用header组件,结构更规范。整体代码风格与ArkTS相似,但细节更灵活,适合金融类应用开发。
|
4月前
|
人工智能 文件存储 数据中心
Ollama部署本地大模型并通过Infortress APP远程访问保姆级教程
本文介绍如何快速上手本地大模型部署工具Ollama及AI远程访问工具Infortress。通过Ollama,开发者可轻松部署如Llama、Deepseek等主流开源模型,仅需几行命令即可完成安装与运行。结合Infortress,用户能实现对本地大模型的远程访问,支持多设备无缝对接,同时提供便捷的模型切换与知识库管理功能。Infortress更兼具NAS软件特性,成为个人AI数据中心的理想选择。
|
5月前
|
存储 安全 数据安全/隐私保护
【Azure Function App】在Function App中使用System Managed Identity访问Storage Account
本文介绍了如何在Azure Function中使用托管身份(Managed Identity)替代AzureWebJobsStorage连接函数应用到存储账户,以提高安全性并减少Access Key的使用。具体步骤包括:1) 启用系统分配的身份;2) 为函数应用授予存储访问权限,添加必要角色(如Storage Blob Data Contributor);3) 配置`AzureWebJobsStorage__blobServiceUri`参数指定Blob Service Uri。完成后删除旧配置,即可通过Managed Identity访问Storage Account。
153 19
|
5月前
|
人工智能 JSON 小程序
【一步步开发AI运动APP】七、自定义姿态动作识别检测——之规则配置检测
本文介绍了如何通过【一步步开发AI运动APP】系列博文,利用自定义姿态识别检测技术开发高性能的AI运动应用。核心内容包括:1) 自定义姿态识别检测,满足人像入镜、动作开始/停止等需求;2) Pose-Calc引擎详解,支持角度匹配、逻辑运算等多种人体分析规则;3) 姿态检测规则编写与执行方法;4) 完整示例展示左右手平举姿态检测。通过这些技术,开发者可轻松实现定制化运动分析功能。
|
4月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
246 4
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践

热门文章

最新文章