📅  最后修改于: 2021-01-05 08:38:55             🧑  作者: Mango
Android外部存储空间是我们执行读写操作的存储空间。外部存储器中的文件存储在/ sdcard或/ storage文件夹等中。保存在外部存储器中的文件是可读的,并且可由用户修改。
在访问应用程序中外部存储中的文件之前,我们应检查设备中外部存储的可用性。
java.io包提供openFileOutput()方法,该方法返回FileOutputStream类的实例,以将文件写入设备的外部存储中。通过调用getExternalFilesDir()来获取仅由您的应用程序使用的目录。要将数据写入文件,请调用FileOutputStream .write()方法。
var myExternalFile:File = File(getExternalFilesDir(filepath),fileName)
try {
val fileOutPutStream = FileOutputStream(myExternalFile)
fileOutPutStream.write(fileContent.toByteArray())
fileOutPutStream.close()
} catch (e: IOException) {
e.printStackTrace()
}
java.io包提供openFileInput()方法,该方法返回FileInputStream类的实例,并从设备的外部存储读取文件。要从文件读取数据,请调用BufferedReader()。readLine() 。
var myExternalFile:File = File(getExternalFilesDir(filepath), fileName)
val filename = fileName.text.toString()
myExternalFile = File(getExternalFilesDir(filepath),filename)
var fileInputStream =FileInputStream(myExternalFile)
var inputStreamReader: InputStreamReader = InputStreamReader(fileInputStream)
val bufferedReader: BufferedReader = BufferedReader(inputStreamReader)
val stringBuilder: StringBuilder = StringBuilder()
var text: String? = null
while ({ text = bufferedReader.readLine(); text }() != null) {
stringBuilder.append(text)
}
fileInputStream.close()
在AndroidManifest.xml文件中添加以下权限。
在此示例中,我们将数据写入外部存储设备中的文件,并从同一外部存储设备读取相同的文件内容。
在activity_main.xml文件中添加以下代码。在此文件中,添加两个EditText作为输入文件名,文件内容,并添加两个Button用于保存和查看文件内容。
在MainActivity.kt类中添加以下代码。在此类中,我们将通过单击保存按钮将文件名和数据保存在外部存储器中,并通过单击查看按钮来检索文件内容。
package example.javatpoint.com.kotlinexternalstoragereadwrite
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import android.os.Environment
import java.io.*
class MainActivity : AppCompatActivity() {
private val filepath = "MyFileStorage"
internal var myExternalFile: File?=null
private val isExternalStorageReadOnly: Boolean get() {
val extStorageState = Environment.getExternalStorageState()
return if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(extStorageState)) {
true
} else {
false
}
}
private val isExternalStorageAvailable: Boolean get() {
val extStorageState = Environment.getExternalStorageState()
return if (Environment.MEDIA_MOUNTED.equals(extStorageState)) {
true
} else{
false
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val fileName = findViewById(R.id.editTextFile) as EditText
val fileData = findViewById(R.id.editTextData) as EditText
val saveButton = findViewById
输出: