Theoretical Paper
- Computer Organization
- Data Structure
- Digital Electronics
- Object Oriented Programming
- Discrete Mathematics
- Graph Theory
- Operating Systems
- Software Engineering
- Computer Graphics
- Database Management System
- Operation Research
- Computer Networking
- Image Processing
- Internet Technologies
- Micro Processor
- E-Commerce & ERP
- Dart Programming
- Flutter Tutorial
- Numerical Methods Tutorials
- Flutter Tutorials
- Kotlin Tutorial
Practical Paper
Industrial Training
Internal Storage
Android Internal Storage is the device memory in which we store the files. The file stored in the internal storage is private in default, and only the same application accesses it. They cannot be accessed from outside the application.
To read and write the data from (into) the file, Android provides openFileInput() and openFileOutput() methods respectively.
When the users uninstall its application from the device, its internal storage file will also be removed.
Write to File in Internal Storage
To write the file in internal storage of device, java.io package offers openFileOutput() method which returns the instance of FileOutputStream class. To write the data into the file call the FileOutputStream .write() method.
val file:String = fileName.text.toString() val data:String = fileData.text.toString() val fileOutputStream:FileOutputStream try { fileOutputStream = openFileOutput(file, Context.MODE_PRIVATE) fileOutputStream.write(data.toByteArray()) }catch (e: Exception){ e.printStackTrace() } val file:String = fileName.text.toString() val data:String = fileData.text.toString() val fileOutputStream:FileOutputStream try { fileOutputStream = openFileOutput(file, Context.MODE_PRIVATE) fileOutputStream.write(data.toByteArray()) }catch (e: Exception){ e.printStackTrace() }
Read File content from Internal Storage
To read the file from the internal storage of device, java.io package offers openFileInput() method which returns the instance of FileInputStream class. To read the data from file call the BufferedReader().readLine()
var fileInputStream: FileInputStream? = null fileInputStream = openFileInput(filename) 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) } //Displaying data on EditText fileData.setText(stringBuilder.toString()).toString() var fileInputStream: FileInputStream? = null fileInputStream = openFileInput(filename) 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) } //Displaying data on EditText fileData.setText(stringBuilder.toString()).toString()
Kotlin Android Read and Write Internal Storage Example
In this example, we will write the data to file inside the internal storage and read the same file content from internal storage.
activity_main.xml
Add the following code in the activity_main.xml file. In this file, add two EditText for input file name, file content and two Button for saving and view file content.
< ?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.javatpoint.com.kotlininternalstoragereadwrite.MainActivity"> < TextView android: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"/> < EditText android: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" /> < TextView android: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"/> < EditText android: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" /> < Button android: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" /> < Button android: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> < ?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.javatpoint.com.kotlininternalstoragereadwrite.MainActivity"> < TextView android: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"/> < EditText android: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" /> < TextView android: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"/> < EditText android: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" /> < Button android: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" /> < Button android: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
Add the following code in the MainActivity.kt class. In this class, we are saving the file name and data inside internal storage by clicking the save button and retrieving the file content by clicking view button.
package example.javatpoint.com.kotlininternalstoragereadwrite import android.content.Context 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 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:FileOutputStream try { 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? = null fileInputStream = openFileInput(filename) 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) } //Displaying data on EditText fileData.setText(stringBuilder.toString()).toString() }else{ Toast.makeText(applicationContext,"file name cannot be blank",Toast.LENGTH_LONG).show() } }) } } package example.javatpoint.com.kotlininternalstoragereadwrite import android.content.Context 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 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:FileOutputStream try { 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? = null fileInputStream = openFileInput(filename) 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) } //Displaying data on EditText fileData.setText(stringBuilder.toString()).toString() }else{ Toast.makeText(applicationContext,"file name cannot be blank",Toast.LENGTH_LONG).show() } }) } }