Site icon C1CTech

Android Read and Write Internal Storage Example

&NewLine;<p>This article is about how to &lpar;write a file to &sol; read a file from&rpar; the internal storage of an android device with the help of a simple application&period;<&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<div class&equals;"wp-block-buttons is-content-justification-center is-layout-flex wp-block-buttons-is-layout-flex"> &NewLine;<div class&equals;"wp-block-button"><a class&equals;"wp-block-button&lowbar;&lowbar;link has-white-color has-text-color has-background" style&equals;"background-color&colon; &num;520599&semi;" href&equals;"https&colon;&sol;&sol;github&period;com&sol;arunk7839&sol;AndroidReadWriteFileExample"><strong>DOWNLOAD CODE<&sol;strong><&sol;a><&sol;div> &NewLine;<&sol;div> &NewLine;<p><amp-youtube layout&equals;"responsive" width&equals;"1200" height&equals;"675" data-videoid&equals;"QlSyX8FfbtQ" title&equals;"Android Read and Write Internal Storage Example"><a placeholder href&equals;"https&colon;&sol;&sol;youtu&period;be&sol;QlSyX8FfbtQ"><img src&equals;"https&colon;&sol;&sol;i&period;ytimg&period;com&sol;vi&sol;QlSyX8FfbtQ&sol;hqdefault&period;jpg" layout&equals;"fill" object-fit&equals;"cover" alt&equals;"Android Read and Write Internal Storage Example"><&sol;a><&sol;amp-youtube><&sol;p> &NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><b>Android Internal Storage<&sol;b><&sol;span><&sol;h4> &NewLine; &NewLine; &NewLine; &NewLine;<ul class&equals;"wp-block-list"> &NewLine;<li class&equals;"p1"><span style&equals;"color&colon; &num;0000ff&semi;"><b>Android Internal Storage<&sol;b><&sol;span> is the device memory in which we store the files&period;<&sol;li> &NewLine;<li class&equals;"p1">The file stored in the internal storage is private in default&comma; and only the same application accesses it&period; They cannot be accessed from outside the application&period;<&sol;li> &NewLine;<li class&equals;"p1">When the user uninstalls the application from the device&comma; its internal storage file will also be removed&period;<&sol;li> &NewLine;<li>All android app internal data files are saved in the <span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;data&sol;data&sol;&lt&semi;your app package name&gt&semi;<&sol;strong><&sol;span> folder&period;<&sol;li> &NewLine;<li>The package name folder &lpar;i&period;e  <span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;data&sol;data&sol;&lt&semi;your app package name&gt&semi;<&sol;strong><&sol;span>&rpar; by default contains <span style&equals;"color&colon; &num;0000ff&semi;"><strong>files<&sol;strong><&sol;span> and <span style&equals;"color&colon; &num;0000ff&semi;"><strong>cache<&sol;strong><&sol;span> subfolders&period; &NewLine;<ul> &NewLine;<li class&equals;"li1"><span style&equals;"color&colon; &num;0000ff&semi;"><b>files<&sol;b>&colon;<&sol;span><b> <&sol;b>used to save general files and <a href&equals;"https&colon;&sol;&sol;developer&period;android&period;com&sol;reference&sol;android&sol;content&sol;Context&period;html&num;getFilesDir&lpar;&rpar;"><span class&equals;"s1"><b><span style&equals;"color&colon; &num;008000&semi;">getFilesDir&lpar;&rpar;<&sol;span><&sol;b><&sol;span><&sol;a> method returns this folder&period;<&sol;li> &NewLine;<li class&equals;"li1"><span style&equals;"color&colon; &num;0000ff&semi;"><b>cache<&sol;b>&colon;<&sol;span> used to save cached files and <span style&equals;"color&colon; &num;008000&semi;"><a style&equals;"color&colon; &num;008000&semi;" href&equals;"https&colon;&sol;&sol;developer&period;android&period;com&sol;reference&sol;android&sol;content&sol;Context&period;html&num;getCacheDir&lpar;&rpar;"><span class&equals;"s1"><b>getCacheDir&lpar;&rpar;<&sol;b><&sol;span><&sol;a> <&sol;span>method returns this folder&period;<&sol;li> &NewLine;<&sol;ul> &NewLine;<&sol;li> &NewLine;<&sol;ul> &NewLine; &NewLine; &NewLine; &NewLine;<h4 class&equals;"h2 wp-block-heading"><strong><span style&equals;"color&colon; &num;000080&semi;">Write to File in Internal Storage<&sol;span><&sol;strong><&sol;h4> &NewLine;<p>To write a file to the internal storage of the device&comma; the <span style&equals;"color&colon; &num;0000ff&semi;"><b>java&period;io<&sol;b><&sol;span> package offers <span style&equals;"color&colon; &num;008000&semi;"><b>openFileOutput&lpar;&rpar;<&sol;b><&sol;span> method which returns the instance of <span style&equals;"color&colon; &num;008000&semi;"><b>FileOutputStream<&sol;b><&sol;span> class&period; To write the data to a file call the <b><span style&equals;"color&colon; &num;008000&semi;">BufferedWriter&lpar;&rpar;&period;write&lpar;&rpar;<&sol;span>&period;<&sol;b><&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<h4 class&equals;"wp-block-heading"><strong><span style&equals;"color&colon; &num;0000ff&semi;">Write File to files Folder<&sol;span><&sol;strong><&sol;h4> &NewLine;<p>You can use any of the two methods to create a file in the files folder&period;<&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<p><strong><span style&equals;"color&colon; &num;0000ff&semi;">Method 1&colon;<&sol;span><&sol;strong><&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<p>Use <span style&equals;"color&colon; &num;008000&semi;"><strong>getFilesDir&lpar;&rpar;<&sol;strong><&sol;span> to get files folder&period;<&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<pre class&equals;"wp-block-preformatted"> File file &equals; new File&lpar;getFilesDir&lpar;&rpar;&comma; fileName&rpar;&semi; &NewLine; FileOutputStream fileOutputStream &equals; new FileOutputStream&lpar;file&rpar;&semi; &NewLine; OutputStreamWriter outputStreamWriter &equals; new OutputStreamWriter&lpar;fileOutputStream&rpar;&semi; &NewLine; BufferedWriter bufferedWriter &equals; new BufferedWriter&lpar;outputStreamWriter&rpar;&semi; &NewLine; bufferedWriter&period;write&lpar;data&rpar;&semi;<&sol;pre> &NewLine; &NewLine; &NewLine; &NewLine;<p><strong><span style&equals;"color&colon; &num;0000ff&semi;">Method 2&colon;<&sol;span><&sol;strong><&sol;p> &NewLine;<p class&equals;"p1">Call Context’s <span style&equals;"color&colon; &num;008000&semi;"><b>openFileOutput&lpar;&rpar;<&sol;b><&sol;span> method to get <span style&equals;"color&colon; &num;0000ff&semi;"><b>FileOutputStream<&sol;b><&sol;span> object&period;<&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<p class&equals;"p1">This method takes two parameters&comma; The first parameter is the <span style&equals;"color&colon; &num;008000&semi;"><strong>file<&sol;strong><&sol;span> name and the second parameter’s value can be&colon;<&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<ol class&equals;"ol1 wp-block-list"> &NewLine;<li class&equals;"li1"><span style&equals;"color&colon; &num;0000ff&semi;"><b>Context&period;MODE&lowbar;PRIVATE<&sol;b><&sol;span> &colon; This means this file can only be read&sol;write by this android app that creates it&period; This mode will overwrite an existing file&comma; if not exist then create it&period;<&sol;li> &NewLine;<li class&equals;"li1"><span style&equals;"color&colon; &num;0000ff&semi;"><b>Context&period;MODE&lowbar;APPEND<&sol;b><&sol;span> &colon; This mode will append data to the existing file&period; If not exist it will create a new one&period;<&sol;li> &NewLine;<&sol;ol> &NewLine; &NewLine; &NewLine; &NewLine;<pre class&equals;"wp-block-preformatted">FileOutputStream fileOutputStream &equals; getApplicationContext&lpar;&rpar;&period;openFileOutput&lpar;fileName&comma; Context&period;MODE&lowbar;PRIVATE&rpar;&semi;<br &sol;>OutputStreamWriter outputStreamWriter &equals; new OutputStreamWriter&lpar;fileOutputStream&rpar;&semi;<br &sol;>BufferedWriter bufferedWriter &equals; new BufferedWriter&lpar;outputStreamWriter&rpar;&semi; <br &sol;>bufferedWriter&period;write&lpar;data&rpar;&semi;<&sol;pre> &NewLine; &NewLine; &NewLine; &NewLine;<h4 class&equals;"wp-block-heading"><strong><span style&equals;"color&colon; &num;0000ff&semi;">Write File to cache Folder<&sol;span><&sol;strong><&sol;h4> &NewLine; &NewLine; &NewLine; &NewLine;<p class&equals;"p1">Use <span style&equals;"color&colon; &num;008000&semi;"><b>getCacheDir&lpar;&rpar;<&sol;b><&sol;span> to get cache folder&period;<&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<pre class&equals;"wp-block-preformatted">File file &equals; new File&lpar;getCacheDir&lpar;&rpar;&comma; fileName&rpar;&semi; &NewLine;FileOutputStream fileOutputStream &equals; new FileOutputStream&lpar;file&rpar;&semi;<&sol;pre> &NewLine; &NewLine; &NewLine; &NewLine;<h4 class&equals;"wp-block-heading"><strong><span style&equals;"color&colon; &num;000080&semi;">Reading Files from Internal Storage<&sol;span><&sol;strong><&sol;h4> &NewLine; &NewLine; &NewLine; &NewLine;<p class&equals;"p1">To read a file from the internal storage of the device&comma; the <span style&equals;"color&colon; &num;0000ff&semi;"><b>java&period;io<&sol;b><&sol;span> package offers <span style&equals;"color&colon; &num;008000&semi;"><b>openFileInput&lpar;&rpar;<&sol;b><&sol;span> method which returns the instance of <span style&equals;"color&colon; &num;008000&semi;"><b>FileInputStream<&sol;b><&sol;span> class&period; To read the data from file call the <b><span style&equals;"color&colon; &num;008000&semi;">BufferedReader&lpar;&rpar;&period;readLine&lpar;&rpar;<&sol;span>&period;<&sol;b><&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<h4 class&equals;"wp-block-heading"><strong><span style&equals;"color&colon; &num;0000ff&semi;">Read File from files Folder<&sol;span><&sol;strong><&sol;h4> &NewLine; &NewLine; &NewLine; &NewLine;<pre class&equals;"wp-block-preformatted">FileInputStream fileInputStream &equals; getApplicationContext&lpar;&rpar;&period;openFileInput&lpar;fileName&rpar;&semi; &NewLine;InputStreamReader inputStreamReader &equals; new InputStreamReader&lpar;fileInputStream&rpar;&semi; &NewLine;BufferedReader bufferedReader &equals; new BufferedReader&lpar;inputStreamReader&rpar;&semi; &NewLine;String lineData &equals; bufferedReader&period;readLine&lpar;&rpar;&semi;<&sol;pre> &NewLine; &NewLine; &NewLine; &NewLine;<h4 class&equals;"wp-block-heading"><strong><span style&equals;"color&colon; &num;0000ff&semi;">Read File from cache Folder<&sol;span><&sol;strong><&sol;h4> &NewLine; &NewLine; &NewLine; &NewLine;<pre class&equals;"wp-block-preformatted">File file &equals; new File&lpar;getCacheDir&lpar;&rpar;&comma;fileName&rpar;&semi; &NewLine;FileInputStream fileInputStream &equals; new FileInputStream&lpar;file&rpar;&semi;<&sol;pre> &NewLine; &NewLine; &NewLine; &NewLine;<h4 class&equals;"wp-block-heading"><span style&equals;"color&colon; &num;000080&semi;"><strong>Creating new project<&sol;strong><&sol;span><&sol;h4> &NewLine; &NewLine; &NewLine; &NewLine;<p>Create a new project by going to <span style&equals;"color&colon; &num;008000&semi;"><b>File <&sol;b><span class&equals;"s1"><b>&Implies;<&sol;b><&sol;span><&sol;span><b><span style&equals;"color&colon; &num;008000&semi;"> New Android Project<&sol;span>&comma;<&sol;b> select<span style&equals;"color&colon; &num;008000&semi;"> <strong>Empty Activity<&sol;strong><&sol;span>&comma; provide <span style&equals;"color&colon; &num;008000&semi;"><strong>app name<&sol;strong><&sol;span>&comma; select language to <span style&equals;"color&colon; &num;0000ff&semi;"><strong>java <&sol;strong><&sol;span>and then finally click on <span style&equals;"color&colon; &num;008000&semi;"><strong>finish<&sol;strong><&sol;span>&period;<&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<h4 class&equals;"wp-block-heading"><span style&equals;"color&colon; &num;000080&semi;"><strong>Creating the XML file<&sol;strong><&sol;span><&sol;h4> &NewLine; &NewLine; &NewLine; &NewLine;<p>The below layout file consist of one <strong><span style&equals;"color&colon; &num;008000&semi;">EditText<&sol;span><&sol;strong> and four buttons with label text <span style&equals;"color&colon; &num;008000&semi;"><strong>WRITE TO FILE<&sol;strong>&comma;  <strong>READ FROM FILE<&sol;strong>&comma; <strong>CREATE CACHED FILE<&sol;strong> <span style&equals;"color&colon; &num;000000&semi;">and <&sol;span><&sol;span><strong><span style&equals;"color&colon; &num;008000&semi;">READ CACHED FILE<&sol;span>&period;<&sol;strong><&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<p><strong><span style&equals;"color&colon; &num;0000ff&semi;">activity&lowbar;main&period;xml<&sol;span><&sol;strong><&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<pre class&equals;"wp-block-preformatted">&lt&semi;&quest;xml version&equals;"1&period;0" encoding&equals;"utf-8"&quest;&gt&semi; &NewLine;&lt&semi;androidx&period;constraintlayout&period;widget&period;ConstraintLayout xmlns&colon;android&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;apk&sol;res&sol;android" &NewLine; xmlns&colon;app&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;apk&sol;res-auto" &NewLine; xmlns&colon;tools&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;tools" &NewLine; android&colon;layout&lowbar;width&equals;"match&lowbar;parent" &NewLine; android&colon;layout&lowbar;height&equals;"match&lowbar;parent" &NewLine; android&colon;layout&lowbar;marginLeft&equals;"10dp" &NewLine; android&colon;layout&lowbar;marginRight&equals;"10dp" &NewLine; tools&colon;context&equals;"&period;MainActivity"&gt&semi; &NewLine; &NewLine; &lt&semi;EditText &NewLine; android&colon;id&equals;"&commat;&plus;id&sol;edt&lowbar;input" &NewLine; android&colon;layout&lowbar;width&equals;"match&lowbar;parent" &NewLine; android&colon;layout&lowbar;height&equals;"wrap&lowbar;content" &NewLine; android&colon;hint&equals;"Enter Input" &NewLine; android&colon;layout&lowbar;marginTop&equals;"20dp" &NewLine; app&colon;layout&lowbar;constraintEnd&lowbar;toEndOf&equals;"parent" &NewLine; app&colon;layout&lowbar;constraintHorizontal&lowbar;bias&equals;"0&period;5" &NewLine; app&colon;layout&lowbar;constraintStart&lowbar;toStartOf&equals;"parent" &NewLine; app&colon;layout&lowbar;constraintTop&lowbar;toTopOf&equals;"parent" &sol;&gt&semi; &NewLine; &NewLine; &lt&semi;Button &NewLine; android&colon;id&equals;"&commat;&plus;id&sol;btn&lowbar;write&lowbar;to&lowbar;file" &NewLine; android&colon;layout&lowbar;width&equals;"match&lowbar;parent" &NewLine; android&colon;layout&lowbar;height&equals;"wrap&lowbar;content" &NewLine; android&colon;text&equals;"WRITE TO FILE" &NewLine; android&colon;layout&lowbar;marginTop&equals;"20dp" &NewLine; app&colon;layout&lowbar;constraintEnd&lowbar;toEndOf&equals;"parent" &NewLine; app&colon;layout&lowbar;constraintHorizontal&lowbar;bias&equals;"0&period;0" &NewLine; app&colon;layout&lowbar;constraintStart&lowbar;toStartOf&equals;"parent" &NewLine; app&colon;layout&lowbar;constraintTop&lowbar;toBottomOf&equals;"&commat;&plus;id&sol;edt&lowbar;input" &sol;&gt&semi; &NewLine; &NewLine; &lt&semi;Button &NewLine; android&colon;id&equals;"&commat;&plus;id&sol;btn&lowbar;read&lowbar;from&lowbar;file" &NewLine; android&colon;layout&lowbar;width&equals;"match&lowbar;parent" &NewLine; android&colon;layout&lowbar;height&equals;"wrap&lowbar;content" &NewLine; android&colon;text&equals;"READ FROM FILE" &NewLine; app&colon;layout&lowbar;constraintEnd&lowbar;toEndOf&equals;"parent" &NewLine; app&colon;layout&lowbar;constraintStart&lowbar;toStartOf&equals;"parent" &NewLine; app&colon;layout&lowbar;constraintTop&lowbar;toBottomOf&equals;"&commat;&plus;id&sol;btn&lowbar;write&lowbar;to&lowbar;file" &sol;&gt&semi; &NewLine; &NewLine; &lt&semi;Button &NewLine; android&colon;id&equals;"&commat;&plus;id&sol;btn&lowbar;create&lowbar;cached&lowbar;file" &NewLine; android&colon;layout&lowbar;width&equals;"match&lowbar;parent" &NewLine; android&colon;layout&lowbar;height&equals;"wrap&lowbar;content" &NewLine; android&colon;text&equals;"CREATE CACHED FILE" &NewLine; app&colon;layout&lowbar;constraintEnd&lowbar;toEndOf&equals;"parent" &NewLine; app&colon;layout&lowbar;constraintStart&lowbar;toStartOf&equals;"parent" &NewLine; app&colon;layout&lowbar;constraintTop&lowbar;toBottomOf&equals;"&commat;&plus;id&sol;btn&lowbar;read&lowbar;from&lowbar;file" &sol;&gt&semi; &NewLine; &NewLine; &lt&semi;Button &NewLine; android&colon;id&equals;"&commat;&plus;id&sol;btn&lowbar;read&lowbar;cached&lowbar;file" &NewLine; android&colon;layout&lowbar;width&equals;"match&lowbar;parent" &NewLine; android&colon;layout&lowbar;height&equals;"wrap&lowbar;content" &NewLine; android&colon;text&equals;"READ CACHED FILE" &NewLine; app&colon;layout&lowbar;constraintEnd&lowbar;toEndOf&equals;"parent" &NewLine; app&colon;layout&lowbar;constraintStart&lowbar;toStartOf&equals;"parent" &NewLine; app&colon;layout&lowbar;constraintTop&lowbar;toBottomOf&equals;"&commat;&plus;id&sol;btn&lowbar;create&lowbar;cached&lowbar;file" &sol;&gt&semi; &NewLine; &NewLine;&lt&semi;&sol;androidx&period;constraintlayout&period;widget&period;ConstraintLayout&gt&semi;<&sol;pre> &NewLine; &NewLine; &NewLine; &NewLine;<h4 class&equals;"wp-block-heading"><span style&equals;"color&colon; &num;000080&semi;"><strong>Implementing code in Activity<&sol;strong><&sol;span><&sol;h4> &NewLine; &NewLine; &NewLine; &NewLine;<p>Here on click of each button perform different operation&colon;<&sol;p>&NewLine;<&excl;-- WP QUADS Content Ad Plugin v&period; 2&period;0&period;98&period;1 -->&NewLine;<div class&equals;"quads-location quads-ad2" id&equals;"quads-ad2" style&equals;"float&colon;none&semi;margin&colon;0px&semi;">&NewLine;&NewLine;<&sol;div>&NewLine; &NewLine; &NewLine; &NewLine; &NewLine;<ul class&equals;"wp-block-list"> &NewLine;<li><span style&equals;"color&colon; &num;0000ff&semi;"><strong>WRITE TO FILE&colon; <&sol;strong><span style&equals;"color&colon; &num;003300&semi;">writes to a file &&num;8220&semi;<strong><span style&equals;"color&colon; &num;008000&semi;">User&&num;8221&semi;<&sol;span><&sol;strong> created inside the <strong><span style&equals;"color&colon; &num;008000&semi;">files<&sol;span><&sol;strong> folder&period;<&sol;span><&sol;span><&sol;li> &NewLine;<li><span style&equals;"color&colon; &num;0000ff&semi;"><strong>READ FROM FILE&colon;<&sol;strong> <span style&equals;"color&colon; &num;000000&semi;">reads from the <span style&equals;"color&colon; &num;003300&semi;">&&num;8220&semi;<strong><span style&equals;"color&colon; &num;008000&semi;">User&&num;8221&semi;<&sol;span><&sol;strong> <&sol;span> file&period;<&sol;span><&sol;span><&sol;li> &NewLine;<li><span style&equals;"color&colon; &num;0000ff&semi;"><strong>CREATE CACHED FILE&colon; <&sol;strong><span style&equals;"color&colon; &num;003300&semi;">writes to a cache file &&num;8220&semi;<strong><span style&equals;"color&colon; &num;008000&semi;">UserCache&&num;8221&semi;<&sol;span><&sol;strong> created inside the <strong><span style&equals;"color&colon; &num;008000&semi;">cache<&sol;span><&sol;strong> folder&period;<&sol;span><&sol;span><&sol;li> &NewLine;<li><span style&equals;"color&colon; &num;0000ff&semi;"><strong>READ CACHED FILE&colon; <&sol;strong><span style&equals;"color&colon; &num;000000&semi;">reads from <strong><span style&equals;"color&colon; &num;008000&semi;">&&num;8220&semi;<&sol;span><span style&equals;"color&colon; &num;008000&semi;">UserCache&&num;8221&semi;<&sol;span><&sol;strong> file&period;<&sol;span><&sol;span><&sol;li> &NewLine;<&sol;ul> &NewLine; &NewLine; &NewLine; &NewLine;<p><strong><span style&equals;"color&colon; &num;0000ff&semi;">MainActivity&period;java<&sol;span><&sol;strong><&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<pre class&equals;"wp-block-preformatted">package com&period;c1ctech&period;readwritefileexp&semi; &NewLine; &NewLine;import android&period;content&period;Context&semi; &NewLine;import android&period;graphics&period;Color&semi; &NewLine;import android&period;os&period;Bundle&semi; &NewLine;import android&period;text&period;TextUtils&semi; &NewLine;import android&period;util&period;Log&semi; &NewLine;import android&period;view&period;View&semi; &NewLine;import android&period;widget&period;Button&semi; &NewLine;import android&period;widget&period;EditText&semi; &NewLine;import android&period;widget&period;Toast&semi; &NewLine; &NewLine;import java&period;io&period;BufferedReader&semi; &NewLine;import java&period;io&period;BufferedWriter&semi; &NewLine;import java&period;io&period;File&semi; &NewLine;import java&period;io&period;FileInputStream&semi; &NewLine;import java&period;io&period;FileNotFoundException&semi; &NewLine;import java&period;io&period;FileOutputStream&semi; &NewLine;import java&period;io&period;IOException&semi; &NewLine;import java&period;io&period;InputStreamReader&semi; &NewLine;import java&period;io&period;OutputStreamWriter&semi; &NewLine; &NewLine;import androidx&period;appcompat&period;app&period;AppCompatActivity&semi; &NewLine; &NewLine;public class MainActivity extends AppCompatActivity &lbrace; &NewLine; &NewLine; private String TAG&lowbar;WRITE&lowbar;READ&lowbar;FILE &equals; "TAG&lowbar;WRITE&lowbar;READ&lowbar;FILE"&semi; &NewLine; &NewLine; EditText edtInput&semi; &NewLine; Button btnWriteToFile&comma; btnReadFromFile&comma; btnCreateCachedFile&comma; btnReadCachedFile&semi; &NewLine; String userData&semi; &NewLine; String fileName&semi; &NewLine; String cacheFileName&semi; &NewLine; &NewLine; &commat;Override &NewLine; protected void onCreate&lpar;Bundle savedInstanceState&rpar; &lbrace; &NewLine; super&period;onCreate&lpar;savedInstanceState&rpar;&semi; &NewLine; setContentView&lpar;R&period;layout&period;activity&lowbar;main&rpar;&semi; &NewLine; &NewLine; getViewsById&lpar;&rpar;&semi; &NewLine; &NewLine; fileName &equals; "User"&semi; &NewLine; cacheFileName &equals; "UserCache"&semi;<br &sol;> &NewLine;<strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;write to internal file<&sol;span><&sol;strong> &NewLine; btnWriteToFile&period;setOnClickListener&lpar;new View&period;OnClickListener&lpar;&rpar; &lbrace; &NewLine; &commat;Override &NewLine; public void onClick&lpar;View v&rpar; &lbrace; &NewLine; userData &equals; edtInput&period;getText&lpar;&rpar;&period;toString&lpar;&rpar;&semi; &NewLine; if &lpar;TextUtils&period;isEmpty&lpar;userData&rpar;&rpar; &lbrace; &NewLine; Toast&period;makeText&lpar;getApplicationContext&lpar;&rpar;&comma; "Input data can not be empty&period;"&comma; Toast&period;LENGTH&lowbar;LONG&rpar;&period;show&lpar;&rpar;&semi; &NewLine; return&semi; &NewLine; &rcub; else &lbrace; &NewLine; try &lbrace; &NewLine; FileOutputStream fileOutputStream &equals; getApplicationContext&lpar;&rpar;&period;openFileOutput&lpar;fileName&comma; Context&period;MODE&lowbar;PRIVATE&rpar;&semi; &NewLine; writeDataToFile&lpar;fileOutputStream&comma; userData&rpar;&semi; &NewLine; Toast&period;makeText&lpar;getApplicationContext&lpar;&rpar;&comma; "Data has been written to file " &plus; fileName &plus; " " &plus; getFilesDir&lpar;&rpar;&period;getAbsolutePath&lpar;&rpar;&comma; Toast&period;LENGTH&lowbar;LONG&rpar;&period;show&lpar;&rpar;&semi; &NewLine; &rcub; catch &lpar;FileNotFoundException ex&rpar; &lbrace; &NewLine; Log&period;e&lpar;TAG&lowbar;WRITE&lowbar;READ&lowbar;FILE&comma; ex&period;getMessage&lpar;&rpar;&comma; ex&rpar;&semi; &NewLine; &rcub; &NewLine; &NewLine; &rcub; &NewLine; &rcub; &NewLine; &rcub;&rpar;&semi; &NewLine; &NewLine;<strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;read from internal file<&sol;span><&sol;strong> &NewLine; btnReadFromFile&period;setOnClickListener&lpar;new View&period;OnClickListener&lpar;&rpar; &lbrace; &NewLine; &commat;Override &NewLine; public void onClick&lpar;View v&rpar; &lbrace; &NewLine; try &lbrace; &NewLine; FileInputStream fileInputStream &equals; getApplicationContext&lpar;&rpar;&period;openFileInput&lpar;fileName&rpar;&semi; &NewLine; String fileData &equals; readDataFromFile&lpar;fileInputStream&rpar;&semi; &NewLine; if &lpar;fileData&period;length&lpar;&rpar; &gt&semi; 0&rpar; &lbrace; &NewLine; edtInput&period;setText&lpar;fileData&rpar;&semi; &NewLine; edtInput&period;setTextColor&lpar;Color&period;BLUE&rpar;&semi; &NewLine; Toast&period;makeText&lpar;getApplicationContext&lpar;&rpar;&comma; "Load saved data from file " &plus; fileName &plus; " " &plus; getFilesDir&lpar;&rpar;&period;getAbsolutePath&lpar;&rpar;&comma; Toast&period;LENGTH&lowbar;SHORT&rpar;&period;show&lpar;&rpar;&semi; &NewLine; Log&period;e&lpar;TAG&lowbar;WRITE&lowbar;READ&lowbar;FILE&comma; getFilesDir&lpar;&rpar;&period;getAbsolutePath&lpar;&rpar;&rpar;&semi; &NewLine; &rcub; else &lbrace; &NewLine; Toast&period;makeText&lpar;getApplicationContext&lpar;&rpar;&comma; "Not load any data&period;"&comma; Toast&period;LENGTH&lowbar;SHORT&rpar;&period;show&lpar;&rpar;&semi; &NewLine; &rcub; &NewLine; &rcub; catch &lpar;FileNotFoundException ex&rpar; &lbrace; &NewLine; Log&period;e&lpar;TAG&lowbar;WRITE&lowbar;READ&lowbar;FILE&comma; ex&period;getMessage&lpar;&rpar;&comma; ex&rpar;&semi; &NewLine; &rcub; &NewLine; &rcub; &NewLine; &rcub;&rpar;&semi; &NewLine; &NewLine;<span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;write to internal cache file<&sol;strong><&sol;span> &NewLine; btnCreateCachedFile&period;setOnClickListener&lpar;new View&period;OnClickListener&lpar;&rpar; &lbrace; &NewLine; &commat;Override &NewLine; public void onClick&lpar;View v&rpar; &lbrace; &NewLine; String userData &equals; edtInput&period;getText&lpar;&rpar;&period;toString&lpar;&rpar;&semi; &NewLine; if &lpar;TextUtils&period;isEmpty&lpar;userData&rpar;&rpar; &lbrace; &NewLine; Toast&period;makeText&lpar;getApplicationContext&lpar;&rpar;&comma; "Input data can not be empty&period;"&comma; Toast&period;LENGTH&lowbar;LONG&rpar;&period;show&lpar;&rpar;&semi; &NewLine; return&semi; &NewLine; &rcub; else &lbrace; &NewLine; File file &equals; new File&lpar;getCacheDir&lpar;&rpar;&comma; cacheFileName&rpar;&semi; &NewLine; writeDataToFile&lpar;file&comma; userData&rpar;&semi; &NewLine; Toast&period;makeText&lpar;getApplicationContext&lpar;&rpar;&comma; "Cached file " &plus; cacheFileName &plus; " is created " &plus; " " &plus; getCacheDir&lpar;&rpar;&period;getAbsolutePath&lpar;&rpar;&comma; Toast&period;LENGTH&lowbar;LONG&rpar;&period;show&lpar;&rpar;&semi; &NewLine; &rcub; &NewLine; &rcub; &NewLine; &rcub;&rpar;&semi; &NewLine; &NewLine;<span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;read from cache file<&sol;strong><&sol;span> &NewLine; btnReadCachedFile&period;setOnClickListener&lpar;new View&period;OnClickListener&lpar;&rpar; &lbrace; &NewLine; &commat;Override &NewLine; public void onClick&lpar;View v&rpar; &lbrace; &NewLine; try &lbrace; &NewLine; Context ctx &equals; getApplicationContext&lpar;&rpar;&semi; &NewLine; File cacheFileDir &equals; new File&lpar;getCacheDir&lpar;&rpar;&comma; cacheFileName&rpar;&semi; &NewLine; FileInputStream fileInputStream &equals; new FileInputStream&lpar;cacheFileDir&rpar;&semi; &NewLine; String fileData &equals; readDataFromFile&lpar;fileInputStream&rpar;&semi; &NewLine; if &lpar;fileData&period;length&lpar;&rpar; &gt&semi; 0&rpar; &lbrace; &NewLine; edtInput&period;setText&lpar;fileData&rpar;&semi; &NewLine; edtInput&period;setTextColor&lpar;Color&period;MAGENTA&rpar;&semi; &NewLine; Toast&period;makeText&lpar;ctx&comma; "Load saved cache data from file " &plus; cacheFileName &plus; " " &plus; getCacheDir&lpar;&rpar;&period;getAbsolutePath&lpar;&rpar;&comma; Toast&period;LENGTH&lowbar;SHORT&rpar;&period;show&lpar;&rpar;&semi; &NewLine; &rcub; else &lbrace; &NewLine; Toast&period;makeText&lpar;ctx&comma; "Not load any cache data&period;"&comma; Toast&period;LENGTH&lowbar;SHORT&rpar;&period;show&lpar;&rpar;&semi; &NewLine; &rcub; &NewLine; &rcub; catch &lpar;FileNotFoundException ex&rpar; &lbrace; &NewLine; Log&period;e&lpar;TAG&lowbar;WRITE&lowbar;READ&lowbar;FILE&comma; ex&period;getMessage&lpar;&rpar;&comma; ex&rpar;&semi; &NewLine; &rcub; &NewLine; &rcub; &NewLine; &rcub;&rpar;&semi; &NewLine; &rcub;<br &sol;> &NewLine;<span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;getting views by its id<&sol;strong><&sol;span> &NewLine; private void getViewsById&lpar;&rpar; &lbrace; &NewLine; &NewLine; edtInput &equals; findViewById&lpar;R&period;id&period;edt&lowbar;input&rpar;&semi; &NewLine; btnWriteToFile &equals; findViewById&lpar;R&period;id&period;btn&lowbar;write&lowbar;to&lowbar;file&rpar;&semi; &NewLine; btnReadFromFile &equals; findViewById&lpar;R&period;id&period;btn&lowbar;read&lowbar;from&lowbar;file&rpar;&semi; &NewLine; btnCreateCachedFile &equals; findViewById&lpar;R&period;id&period;btn&lowbar;create&lowbar;cached&lowbar;file&rpar;&semi; &NewLine; btnReadCachedFile &equals; findViewById&lpar;R&period;id&period;btn&lowbar;read&lowbar;cached&lowbar;file&rpar;&semi; &NewLine; &rcub; &NewLine; &NewLine; <span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol; This method will write data to file&period;<&sol;strong><&sol;span> &NewLine; private void writeDataToFile&lpar;File file&comma; String data&rpar; &lbrace; &NewLine; try &lbrace; &NewLine; FileOutputStream fileOutputStream &equals; new FileOutputStream&lpar;file&rpar;&semi; &NewLine; this&period;writeDataToFile&lpar;fileOutputStream&comma; data&rpar;&semi; &NewLine; fileOutputStream&period;close&lpar;&rpar;&semi; &NewLine; &rcub; catch &lpar;FileNotFoundException ex&rpar; &lbrace; &NewLine; Log&period;e&lpar;TAG&lowbar;WRITE&lowbar;READ&lowbar;FILE&comma; ex&period;getMessage&lpar;&rpar;&comma; ex&rpar;&semi; &NewLine; &rcub; catch &lpar;IOException ex&rpar; &lbrace; &NewLine; Log&period;e&lpar;TAG&lowbar;WRITE&lowbar;READ&lowbar;FILE&comma; ex&period;getMessage&lpar;&rpar;&comma; ex&rpar;&semi; &NewLine; &rcub; &NewLine; &rcub; &NewLine; &NewLine; <strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol; This method will write data to FileOutputStream&period;<&sol;span><&sol;strong> &NewLine; private void writeDataToFile&lpar;FileOutputStream fileOutputStream&comma; String data&rpar; &lbrace; &NewLine; try &lbrace; &NewLine; OutputStreamWriter outputStreamWriter &equals; new OutputStreamWriter&lpar;fileOutputStream&rpar;&semi; &NewLine; BufferedWriter bufferedWriter &equals; new BufferedWriter&lpar;outputStreamWriter&rpar;&semi; &NewLine; bufferedWriter&period;write&lpar;data&rpar;&semi; &NewLine; bufferedWriter&period;flush&lpar;&rpar;&semi; &NewLine; bufferedWriter&period;close&lpar;&rpar;&semi; &NewLine; outputStreamWriter&period;close&lpar;&rpar;&semi; &NewLine; &rcub; catch &lpar;IOException ex&rpar; &lbrace; &NewLine; Log&period;e&lpar;TAG&lowbar;WRITE&lowbar;READ&lowbar;FILE&comma; ex&period;getMessage&lpar;&rpar;&comma; ex&rpar;&semi; &NewLine; &rcub; &NewLine; &NewLine; &rcub; &NewLine; &NewLine;<span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;This method will read data from FileInputStream<&sol;strong> <&sol;span> &NewLine; private String readDataFromFile&lpar;FileInputStream fileInputStream&rpar; &lbrace; &NewLine; StringBuffer retBuf &equals; new StringBuffer&lpar;&rpar;&semi; &NewLine; try &lbrace; &NewLine; if &lpar;fileInputStream &excl;&equals; null&rpar; &lbrace; &NewLine; InputStreamReader inputStreamReader &equals; new InputStreamReader&lpar;fileInputStream&rpar;&semi; &NewLine; BufferedReader bufferedReader &equals; new BufferedReader&lpar;inputStreamReader&rpar;&semi; &NewLine; String lineData &equals; bufferedReader&period;readLine&lpar;&rpar;&semi; &NewLine; while &lpar;lineData &excl;&equals; null&rpar; &lbrace; &NewLine; retBuf&period;append&lpar;lineData&rpar;&semi; &NewLine; lineData &equals; bufferedReader&period;readLine&lpar;&rpar;&semi; &NewLine; &rcub; &NewLine; &rcub; &NewLine; &rcub; catch &lpar;IOException ex&rpar; &lbrace; &NewLine; Log&period;e&lpar;TAG&lowbar;WRITE&lowbar;READ&lowbar;FILE&comma; ex&period;getMessage&lpar;&rpar;&comma; ex&rpar;&semi; &NewLine; &rcub; catch &lpar;Exception ex&rpar; &lbrace; &NewLine; Log&period;e&lpar;TAG&lowbar;WRITE&lowbar;READ&lowbar;FILE&comma; ex&period;getMessage&lpar;&rpar;&comma; ex&rpar;&semi; &NewLine; &rcub; finally &lbrace; &NewLine; return retBuf&period;toString&lpar;&rpar;&semi; &NewLine; &rcub; &NewLine; &rcub; &NewLine;&rcub;<&sol;pre> &NewLine; &NewLine; &NewLine; &NewLine;<p>When you run the app it will look like this&colon;<&sol;p> &NewLine;<p><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Write to&sol;read from a file in the files folder&colon;<&sol;strong><&sol;span><&sol;p> &NewLine;<p><img class&equals;"alignnone wp-image-2775" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2021&sol;08&sol;Screenshot&lowbar;1630079855-576x1024&period;png" alt&equals;"" width&equals;"333" height&equals;"592" &sol;>      <img class&equals;"alignnone wp-image-2776" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2021&sol;08&sol;Screenshot&lowbar;1630080076-576x1024&period;png" alt&equals;"" width&equals;"334" height&equals;"594" &sol;><&sol;p> &NewLine;<p><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Write to&sol;read from a file in the cache folder&colon;<&sol;strong><&sol;span><&sol;p> &NewLine;<p><img class&equals;"alignnone wp-image-2777" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2021&sol;08&sol;Screenshot&lowbar;1630080103-576x1024&period;png" alt&equals;"" width&equals;"338" height&equals;"601" &sol;>      <img class&equals;"alignnone wp-image-2778" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2021&sol;08&sol;Screenshot&lowbar;1630080109-576x1024&period;png" alt&equals;"" width&equals;"338" height&equals;"601" &sol;>&NewLine;

Exit mobile version