Kotlin程序员Android开发

56. (android开发)文件读写操作OpenFileOut

2017-12-31  本文已影响94人  厚土火焱

除了保存key-value数据,在android中也可以直接以文件的形式保存内容。数据格式就可以随意了,都是按照字符串的形式存在文件里的。就以最长见到的 txt 文本文件为例子吧。
读写文件都需要打开文件,离不开两个方法:OpenFileOutput 和 OpenFileInput
这两个方法针对的文件,在 android 中的存储位置是 /data/data/<package name>/files
先写一个界面代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.cofox.functions.OpenFileOutuutAndOpenFileInput.OpenFileOutputActivity">

    <TextView
        android:id="@+id/ttvwData"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <Button
        android:id="@+id/btnSave"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="保存数据" />

    <Button
        android:id="@+id/btnLoad"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="读取数据" />
</LinearLayout>

初始界面

然后写 kotlin 代码。
在 onCreate 中增加两个按钮的点击动作

        // 向 data.txt 写入数据
        btnSave.setOnClickListener {
            try {
                val fileOutput = openFileOutput("data.txt", Activity.MODE_PRIVATE)
                val str = "赤子之心,犀牛望月,永是勇士。耐心、细心、信心、恒心。"
                fileOutput.write(str.toByteArray(Charsets.UTF_8))
                fileOutput.close()
                Toast.makeText(this, "数据保存成功!", Toast.LENGTH_LONG).show()
            } catch (e: Exception) {
            }
        }
        // 读取 data.txt 中的数据
        btnLoad.setOnClickListener {
            try {
                val fileInput = openFileInput("data.txt")
                fileInput.reader().forEachLine { ttvwData.setText(it) }
                fileInput.close()
            } catch (e: Exception) {
            }
        }
显示结果
上一篇下一篇

猜你喜欢

热点阅读