首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android到Windows 8:使用文件

Android到Windows 8:使用文件

作者头像
博士酱
发布2018-01-12 15:45:38
1.5K0
发布2018-01-12 15:45:38

从安卓平台到Win8:文件的处理

本文将介绍如何编写Win8中Windows Store里的应用代码,用于保存图像、文档等文件。在应用中,文件可以保存到应用定义的位置或USB设备之类的外部存储设备中。

用户可能在使用编辑器类程序时想要保存当前正在处理的文档,并立刻重新打开它。也可能用户在使用图像编辑程序时想将当前图片保存到USB设备中以便在电视上查看或在数码相框中使用。因此,你可以实现保存文件到应用定义位置或外部存储设备中的功能来帮助用户实现需求。

这里我简单说明一下Windows Store应用中文件存储功能的基础,每个程序都可以将文件存储到特定设备的一系列目录中(它们被称为本地目录、漫游目录以及临时目录)。

  • 本地目录存储的是只在本地设备上使用的文件
  • 漫游目录存储的是用户安装此应用的所有设备上使用的文件
  • 临时目录和本地目录类似,但系统任何时候都可以清空此文件夹

当用户安装了一个Windows Store应用后,Windows会自动创建这些目录,同时Windows也会引导程序到目录。你需要做的就是使用ApplicationData类去访问它们。当用户卸载应用时,Windows也会自动移除对应的目录。

Windows小技巧 如果用户想要存储一些更有价值、不可替代的文件,那么你需要让你的应用将其存储到SkyDrive之类的更具持久性的位置中。

在你想把文件存储到外部存储设备时,需要使用DeviceInformation类和StorageDevice类。这些内容以后会细讲,先展示一下刚才这些内容如何用代码实现。

在应用定义目录内存储文件

在Windows Store应用中,保存一个名为hello.txt的文件,如果是本地目录的话需要这样写:

var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("Hello.txt");await FileIO.WriteTextAsync(file, "Hello world!");

如果是漫游目录的话则是这样:

var file = await ApplicationData.Current.RoamingFolder.CreateFileAsync("Hello.txt");await FileIO.WriteTextAsync(file, "Hello world!");

临时目录则是这样:

var tempFile = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("TempFile.txt");

安卓小技巧 在安卓应用中,本地目录代码需要这么写:

File tempFile;tempFile = File.createTempFile("TempFile.txt", null, context.getCacheDir());
String filename = "hello.txt";String string = "Hello world!";FileOutputStream outputStream;​outputStream = openFileOutput(filename, Context.MODE_PRIVATE);outputStream.write(string.getBytes());outputStream.close();

记得把文件创建模式调整为MODE_PRIVATE,这样的话其他应用就无法访问这些文件了。通常Windows Store应用只能访问它们自己的文件。

保存文件到外部存储设备

如果想要将文件存储到外部存储设备中,你必须先声明应用中的Package.appsxmanifest的Removable Storage属性。

声明后则需使用如下代码检测外部存储设备是否可用:

public async Task<bool> IsExternalStorageAvailable(){  var devices = await DeviceInformation.FindAllAsync(StorageDevice.GetDeviceSelector());   if (devices.Count > 0)    return true;   else    return false;}

如果外部存储设备可用则可以使用如下代码创建文件:

var storage = StorageDevice.FromId(deviceInformation.Id);await storage.CreateFileAsync("HelloWorld.png");

安卓小技巧 在安卓应用中,同样的功能实现需要先在应用manifest中请求WRITE_EXTERNAL_STORAGE权限,如下所示:

<manifest> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /></manifest>

在请求权限后,使用如下代码检测外部存储设备是否可用:

public boolean isExternalStorageWritable() {     String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) {   return true; }  return false;}

如果外部存储设备可用,那就可以创建文件了。比如在图片目录中创建文件可以使用如下代码:

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "HelloWorld.png");
评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在应用定义目录内存储文件
  • 保存文件到外部存储设备
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档