|
|
|
|
移动端

3.2.2 文件存储

《Android游戏开发从入门到精通》第3章Android 游戏开发基础,本章将引导读者开始Android 手机游戏开发,详细讲解Android 游戏开发的基本知识,为读者进行本书后面知识的学习打下基础。本节为大家介绍文件存储。

作者:王玉芹来源:机械工业出版社|2017-11-14 11:04

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

3.2.2 文件存储

虽然使用SharedPreferences 存储方式的方法非常方便,但是这种方式的缺点也非常明显——只适合存储比较简单的数据。如果想在Android 系统中存储更多的数据,有多种方法可供我们选择,例如本小节将要讲解的文件存储方式就是一种很好的选择。和传统的在Java 中实现I/O 的程序类似,在Android 中,可以使用方法openFileInput()和方法openFileOuput()来读取设备上的文件,例如下面的代码。

  1. String FILE_NAME = "tempfile.tmp"; //确定要操作文件的文件名  
  2. //初始化  
  3. FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_PRIVATE);  
  4. FileInputStream fis = openFileInput(FILE_NAME); //创建写入流 

在上述代码中,方法openFileInput()和方法openFileOuput()只能读取该应用目录下的文件,如果读取非其自身目录下的文件则会抛出异常。如果在调用FileOutputStream 时指定的文件不存在,Android 会自动创建它。并且在默认情况下,在写入的时候会覆盖原来文件的内容。如果想把新写入的内容附加到原文件内容之后,则可以指定其模式为Context.MODE_APPEND。在默认情况下,使用方法openFileOutput()创建的文件只能被其调用的应用程序使用,其他应用程序无法读取这个文件。如果需要在不同的应用中共享数据,可以使用ContentProvider 存储方式实现。

如果应用程序需要使用一些额外的资源文件,例如用于测试音乐播放器是否可以正常工作的MP3 文件,我们可以将这些测试文件放在应用程序的“/res/raw/”目录下,例如命名为mydatafile.mp3。此时就可以在应用程序中使用getResources()方法获取资源,然后用openRawResource()方法(不带后缀的资源文件名)打开这个文件,具体实现代码如下。

  1. Resources myResources = getResources();  
  2. InputStream myFile = myResources.openRawResource(R.raw.myfilename); 

除了使用方法openFileInput()和方法openFileOuput()读写文件外,在Android 中还可以使用deleteFile()和fileList()等方法来操作文件。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

鸟哥的Linux私房菜——服务器架设篇(第二版)

本书是对连续三年蝉联畅销书排行榜前10名的《Linux鸟哥私房菜——服务器架设篇》的升级版,新版本根据目前服务器与网络环境做了大幅度修订...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊