Android第一行代码——快速入门 Kotlin 编程(7.2 文件存储)

本文介绍了Android中使用Kotlin进行文件存储的基本操作,包括通过Context的openFileOutput()方法将数据写入文件,以及使用openFileInput()方法从文件读取数据。讲解了MODE_PRIVATE和MODE_APPEND两种文件操作模式,并通过示例展示了如何在Activity销毁前保存EditText内容到文件,以及在程序启动时恢复显示。此外,还提到了Device File Explorer工具用于验证数据存储。
摘要由CSDN通过智能技术生成

目录

7.2        文件存储

7.2.1        将数据存储到文件中

7.2.2        从文件中读取数据


7.2        文件存储

        文件存储是 Android 中最基本的数据存储方式,它不对存储的内容进行任何格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合存储一些简单的文本数据或二进制数 据。如果你想使用文件存储的方式来保存一些较为复杂的结构化数据,就需要定义一套自己的 格式规范,方便之后将数据从文件中重新解析出来。

        那么首先我们就来看一看,Android 中是如何通过文件来保存数据的。

7.2.1        将数据存储到文件中

        Context 类中提供了一个 openFileOutput() 方法,可以用于将数据存储到指定的文件中。这 个方法接收两个参数:第一个参数是文件名,在文件创建的时候使用,注意这里指定的文件名不可以包含路径,因为所有的文件都默认存储到/data/data/<pack age name>/files/ 目录 下;第二个参数是文件的操作模式,主要有 MODE_PRIVATE  MODE_APPEND 两种模式可选,默认是MODE_PRIVATE,表示当指定相同文件名的时候,所写入的内容将会覆盖原文件中的内 容,而MODE_APPEND 则表示如果该文件已存在,就往文件里面追加内容,不存在就创建新文 件。其实文件的操作模式本来还有另外两种:MODE_WORLD_READABLE MODE_WORLD_WRITEABLE。这两种模式表示允许其他应用程序对我们程序中的文件进行读写 操作,不过由于这两种模式过于危险,很容易引起应用的安全漏洞,已在Andr oid 4.2 版本中被 废弃。

        openFileOutput() 方法返回的是一个 FileOutputStream 对象,得到这个对象之后就可以 使用Java 流的方式将数据写入文件中了。以下是一段简单的代码示例,展示了如何将一段文本 内容保存到文件中:

fun save(inputText: String) { 
    try { 
        val output = openFileOutput("data", Context.MODE_PRIVATE)
        val writer = BufferedWriter(OutputStreamWriter(output)) 
        writer.use { 
            it.write(inputText) 
        } 
    } catch (e: IOException) { 
        e.printStackTrace() 
    } 
} 

        如果你已经比较熟悉 Java 流了,上面的代码一定不难理解吧。这里通过 openFileOutput() 方法能够得到一个 FileOutputStream 对象,然后借助它构建出一个 OutputStreamWriter 对象,接着再使用 OutputStreamWriter 构建出一个 BufferedWriter 对象,这样你就可以通 过BufferedWriter 将文本内容写入文件中了。

        注意,这里还使用了一个 use 函数,这是 Kotlin 提供的一个内置扩展函数。它会保证在Lambda 表达式中的代码全部执行完之后自动将外层的流关闭,这样就不需要我们再编写一个finally 语句,手动去关闭流了,是一个非常好用的扩展函数。

        另外,Kotlin 是没有异常检查机制(check ed e xception )的。这意味着使用

  • 22
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值