Save data to file
save data
// This function will save the data of inputText into file "data" as text file
// The file "data" will be saved to /data/data/com.aimerneige.example/files/data
fun save(inputText: String) {
try {
// "data" is the name of the file you saved on phone storage
// You can change it as you want
val output = openFileOutput("data", Context.MODE_PRIVATE)
val writer = BufferedWriter(OutputStreamWriter(output))
writer.use {
it.write(inputText)
}
} catch (e: IOException) {
e.printStackTrace()
}
}
load data
// This function will try to load the data at a file named "data"
// which is on /data/data/com.aimerneige.example/files/data
fun load(): String {
// a StringBuilder to load data
val content = StringBuilder()
try {
// "data" is the name of the file you want to find on disk
val input = openFileInput("data")
val reader = BufferedReader(InputStreamReader(input))
reader.use {
reader.forEachLine {
content.append(it)
}
}
}
catch (e: IOException) {
e.printStackTrace()
}
return content.toString()
}
You can also use like this:
save data with file name
fun save(data_input: String, file_name: String) {
try {
val output = openFileOutput(file_name, Context.MODE_PRIVATE)
val writer = BufferedWriter(OutputStreamWriter(output))
writer.use {
it.write(data_input)
}
} catch (e: IOException) {
e.printStackTrace()
}
}
read data with file name
fun load(file_name: String): String {
val content = StringBuilder()
try {
val input = openFileInput(file_name)
val reader = BufferedReader(InputStreamReader(input))
reader.use {
reader.forEachLine {
content.append(it)
}
}
}
catch (e: IOException) {
e.printStackTrace()
}
return content.toString()
}
In this way, all of the file will saved into the file /data/data/{package-name}/files/{file-name}
.
Save data with SharedPreferences
save data
// This function will save much data with key-value into file "data.xml"
// The file "data.xml" will be saved to /data/data/com.aimerneige.example/shared_prefs/data.xml
button_save.setOnClickListener {
// "data" is the name of the file you saved on phone storage
// You can change it as you want
val editor = getSharedPreferences("data", Context.MODE_PRIVATE).edit()
editor.putString("name", "Tom")
editor.putInt("age", 28)
editor.putBoolean("married", false)
editor.apply()
}
load data
// This function will try to load the data at "data.xml"
// which is on /data/data/com.aimerneige.example/shared_prefs/data.xml
button_load.setOnClickListener {
// "data" is the name of the file without the .xml
val prefs = getSharedPreferences("data", Context.MODE_PRIVATE)
// needless to check if the file contains the data
// just use a val to read it, if failed, use the default value
val name = prefs.getString("name", "")
val age = prefs.getInt("age", 0)
val married = prefs.getBoolean("married", false)
val sb = StringBuilder()
sb.append("Name: " + name + " ")
sb.append("Age: " + age.toString() + " ")
sb.append("Married: " + married.toString() + ".")
Toast.makeText(this, sb.toString(), Toast.LENGTH_SHORT).show()
}
In this way, all of the file will saved into the file /data/data/{package-name}/shared_prefs/{file-name}.xml
.
Or, you can get a SharedPreferences in this way:
val prefs = getSharedPreferences(Context.MODE_PRIVATE)
This will save data into the file /data/data/{package-name}/shared_prefs/{current-activity-class-name}.xml