除了保存key-value數(shù)據(jù),在android中也可以直接以文件的形式保存內(nèi)容翠桦。數(shù)據(jù)格式就可以隨意了十厢,都是按照字符串的形式存在文件里的贯卦。就以最長見到的 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="保存數(shù)據(jù)" />
<Button
android:id="@+id/btnLoad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="讀取數(shù)據(jù)" />
</LinearLayout>
然后寫 kotlin 代碼。
在 onCreate 中增加兩個按鈕的點(diǎn)擊動作
// 向 data.txt 寫入數(shù)據(jù)
btnSave.setOnClickListener {
try {
val fileOutput = openFileOutput("data.txt", Activity.MODE_PRIVATE)
val str = "赤子之心跑杭,犀牛望月铆帽,永是勇士。耐心德谅、細(xì)心爹橱、信心、恒心窄做。"
fileOutput.write(str.toByteArray(Charsets.UTF_8))
fileOutput.close()
Toast.makeText(this, "數(shù)據(jù)保存成功愧驱!", Toast.LENGTH_LONG).show()
} catch (e: Exception) {
}
}
// 讀取 data.txt 中的數(shù)據(jù)
btnLoad.setOnClickListener {
try {
val fileInput = openFileInput("data.txt")
fileInput.reader().forEachLine { ttvwData.setText(it) }
fileInput.close()
} catch (e: Exception) {
}
}