除了保存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) {
}
}
显示结果
网友评论