Kotlin Android读写内部存储

本文概述

  • 写入内部存储中的文件
  • 从内部存储读取文件内容
  • Kotlin Android读写内部存储示例
Android Internal Storage是我们存储文件的设备内存。默认情况下, 存储在内部存储器中的文件是私有文件, 只有同一应用程序可以访问该文件。无法从应用程序外部访问它们。
【Kotlin Android读写内部存储】为了从文件读取数据或将数据写入文件, Android分别提供了openFileInput()和openFileOutput()方法。
当用户从设备上卸载其应用程序时, 其内部存储文件也将被删除。
写入内部存储中的文件 为了将文件写入设备的内部存储中, java.io包提供了openFileOutput()方法, 该方法返回FileOutputStream类的实例。要将数据写入文件, 请调用FileOutputStream .write()方法。
val file:String = fileName.text.toString()val data:String = fileData.text.toString()val fileOutputStream:FileOutputStreamtry {fileOutputStream = openFileOutput(file, Context.MODE_PRIVATE)fileOutputStream.write(data.toByteArray())}catch (e: Exception){e.printStackTrace()}

从内部存储读取文件内容 为了从设备的内部存储读取文件, java.io包提供了openFileInput()方法, 该方法返回FileInputStream类的实例。要从文件读取数据, 请调用BufferedReader()。readLine()
var fileInputStream: FileInputStream? = nullfileInputStream = openFileInput(filename)var inputStreamReader: InputStreamReader = InputStreamReader(fileInputStream)val bufferedReader: BufferedReader = BufferedReader(inputStreamReader)val stringBuilder: StringBuilder = StringBuilder()var text: String? = nullwhile ({ text = bufferedReader.readLine(); text }() != null) {stringBuilder.append(text)}//Displaying data on EditTextfileData.setText(stringBuilder.toString()).toString()

Kotlin Android读写内部存储示例 在此示例中, 我们将数据写入内部存储器中的文件, 并从内部存储器中读取相同的文件内容。
activity_main.xml
在activity_main.xml文件中添加以下代码。在此文件中, 为输入文件名, 文件内容添加两个EditText, 并为保存和查看文件内容添加两个Button。
< ?xml version="1.0" encoding="utf-8"?> < RelativeLayout 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"tools:context="example.srcmini.com.kotlininternalstoragereadwrite.MainActivity"> < TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"android:layout_alignParentTop="true"android:layout_marginLeft="31dp"android:layout_marginStart="31dp"android:layout_marginTop="117dp"android:text="File Name"android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"/> < EditTextandroid:id="@+id/editFile"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/textView"android:layout_alignBottom="@+id/textView"android:layout_alignLeft="@+id/btnSave"android:layout_alignStart="@+id/btnSave"android:layout_marginLeft="31dp"android:layout_marginStart="31dp"android:ems="10"android:paddingLeft="10dp"android:inputType="textPersonName"android:hint="file name" /> < TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignEnd="@+id/textView"android:layout_alignRight="@+id/textView"android:layout_below="@+id/textView"android:layout_marginTop="67dp"android:text="File Data"android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"/> < EditTextandroid:id="@+id/editData"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/textView2"android:layout_alignBottom="@+id/textView2"android:layout_alignLeft="@+id/editFile"android:layout_alignStart="@+id/editFile"android:ems="10"android:lines="5"android:hint="data" /> < Buttonandroid:id="@+id/btnSave"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/textView2"android:layout_alignParentBottom="true"android:layout_alignStart="@+id/textView2"android:layout_marginBottom="53dp"android:layout_marginLeft="49dp"android:layout_marginStart="49dp"android:text="Save" /> < Buttonandroid:id="@+id/btnView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignEnd="@+id/editData"android:layout_alignRight="@+id/editData"android:layout_alignTop="@+id/btnSave"android:layout_marginEnd="33dp"android:layout_marginRight="33dp"android:text="View" /> < /RelativeLayout>

MainActivity.kt
在MainActivity.kt类中添加以下代码。在此类中, 我们将通过单击保存按钮将文件名和数据保存在内部存储器中, 然后通过单击查看按钮来检索文件内容。
package example.srcmini.com.kotlininternalstoragereadwriteimport android.content.Contextimport android.support.v7.app.AppCompatActivityimport android.os.Bundleimport android.view.Viewimport android.widget.Buttonimport android.widget.EditTextimport android.widget.Toastimport java.io.*class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val fileName = findViewById< EditText> (R.id.editFile)val fileData = findViewById< EditText> (R.id.editData)val btnSave = findViewById< Button> (R.id.btnSave)val btnView = findViewById< Button> (R.id.btnView)btnSave.setOnClickListener(View.OnClickListener {val file:String = fileName.text.toString()val data:String = fileData.text.toString()val fileOutputStream:FileOutputStreamtry {fileOutputStream = openFileOutput(file, Context.MODE_PRIVATE)fileOutputStream.write(data.toByteArray())} catch (e: FileNotFoundException){e.printStackTrace()}catch (e: NumberFormatException){e.printStackTrace()}catch (e: IOException){e.printStackTrace()}catch (e: Exception){e.printStackTrace()}Toast.makeText(applicationContext, "data save", Toast.LENGTH_LONG).show()fileName.text.clear()fileData.text.clear()})btnView.setOnClickListener(View.OnClickListener {val filename = fileName.text.toString()if(filename.toString()!=null & & filename.toString().trim()!=""){var fileInputStream: FileInputStream? = nullfileInputStream = openFileInput(filename)var inputStreamReader: InputStreamReader = InputStreamReader(fileInputStream)val bufferedReader: BufferedReader = BufferedReader(inputStreamReader)val stringBuilder: StringBuilder = StringBuilder()var text: String? = nullwhile ({ text = bufferedReader.readLine(); text }() != null) {stringBuilder.append(text)}//Displaying data on EditTextfileData.setText(stringBuilder.toString()).toString()}else{Toast.makeText(applicationContext, "file name cannot be blank", Toast.LENGTH_LONG).show()}})}}

输出:
Kotlin Android读写内部存储

文章图片
Kotlin Android读写内部存储

文章图片
Kotlin Android读写内部存储

文章图片
Kotlin Android读写内部存储

文章图片
Kotlin Android读写内部存储

文章图片

    推荐阅读