Android stores read and write files internally, and android reads and writes
File read/write operations
* Ram memory: The Running memory, equivalent to the computer memory
* Rom memory: internal storage space, equivalent to the hard disk of a computer
* SD card: external storage space, equivalent to a mobile hard disk of a computer
Read and Write files in an internal Bucket
> Case study: Enter the account password, select "Remember account password", and click "Log on" to save the account and password at the same time. The interface is as follows:
1. Define the Layout
The Code is as follows:
<LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: tools = "http://schemas.android.com/tools" android: layout_width = "match_parent" android: layout_height = "match_parent" android: paddingBottom = "@ dimen/activity_vertical_margin" android: paddingLeft = "@ dimen/plugin" android: paddingRight = "@ dimen/plugin" android: paddingTop = "@ dimen/plugin" tools: context = ". mainActivity "android: orientation =" vertical "> <EditText android: id =" @ + id/et_name "android: layout_width =" match_parent "android: layout_height =" wrap_content "android: hint = "enter account"/> <EditText android: id = "@ + id/pass" android: inputType = "textPassword" android: layout_width = "match_parent" android: layout_height = "wrap_content" android: hint = "enter the password"/> <CheckBox android: id = "@ + id/cb" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Remember account and password"/> <Button android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: onClick = "click" android: text = "login"/> </LinearLayout>
The Code is as follows:
<LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: tools = "http://schemas.android.com/tools" android: layout_width = "match_parent" android: layout_height = "match_parent" android: orientation = "vertical" android: paddingBottom = "@ dimen/activity_vertical_margin" android: paddingLeft = "@ dimen/plugin" android: paddingRight = "@ dimen/plugin" android: paddingTop = "@ dimen/plugin" tools: context = ". mainActivity "> <EditText android: id =" @ + id/et_name "android: layout_width =" match_parent "android: layout_height =" wrap_content "android: hint = "Enter the Account"/> <EditText android: id = "@ + id/et_pass" android: layout_width = "match_parent" android: layout_height = "wrap_content" android: hint = "enter the password" android: inputType = "textPassword"/> <RelativeLayout android: layout_width = "wrap_content" android: layout_height = "wrap_content"> <CheckBox android: id = "@ + id/cb" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: layout_centerVertical = "true" android: text = "Remember account and password"/> <Button android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: layout_alignParentRight = "true" android: onClick = "click" android: text = "login"/> </RelativeLayout> </LinearLayout>
Package com. wuyudong. rwinrom; import java. io. file; import java. io. fileOutputStream; import android. OS. bundle; import android. app. activity; import android. view. menu; import android. view. view; import android. widget. checkBox; import android. widget. editText; import android. widget. toast; public class MainActivity extends Activity {@ Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_main);} public void click (View v) {// obtain the user's input account and password EditText et_name = (EditText) findViewById (R. id. et_name); EditText et_pass = (EditText) findViewById (R. id. et_pass); String name = et_name.getText (). toString (); String pass = et_pass.getText (). toString (); // obtain the CheckBox component CheckBox cb = (CheckBox) findViewById (R. id. cb); // check whether the if (cb. isChecked () {saveAccount (name, pass) ;}// the Toast prompt box appears. makeText (this, "Logon successful", Toast. LENGTH_SHORT ). show ();} public void saveAccount (String name, String pass) {File file = new File ("data/com. wuyudong. rwinrom/info.txt "); try {FileOutputStream fos = new FileOutputStream (file); fos. write (name + "#" + pass ). getBytes (); fos. close ();} catch (Exception e) {// TODO: handle exception e. printStackTrace ();}}}
Before running the program, the folder in the internal storage photo is as follows:
The folder is empty.
Run the following interface:
Click "generate" to generate an info.txt file.
Export the file to your local computer
File Content: wuyudong #123456
4. Enable io stream to write files to internal storage
* Directly enable the file output stream to write data
// Persistently save data
File file = new File ("data/com. itheima. rwinrom/info.txt ");
FileOutputStream fos = new FileOutputStream (file );
Fos. write (name + "#" + pass). getBytes ());
Fos. close ();
* Check whether the file exists before reading data.
If (file. exists ())
* Reading the stored data is also directly reading the file input stream.
File file = new File ("data/com. itheima. rwinrom/info.txt ");
FileInputStream FCM = new FileInputStream (file );
// Change byte stream to byte stream
BufferedReader br = new BufferedReader (new InputStreamReader (FCM ));
String text = br. readLine ();
String [] s = text. split ("##");
* After the data is read, it is displayed in the input box.
Et_name.setText (s [0]);
Et_pass.setText (s [1]);
* An application can only create files under its own package name directory and cannot create files in other people's homes.
The final code is as follows:
Package com. wuyudong. rwinrom; import java. io. bufferedReader; import java. io. file; import java. io. fileInputStream; import java. io. fileOutputStream; import java. io. inputStreamReader; import android. OS. bundle; import android. app. activity; import android. view. view; import android. widget. checkBox; import android. widget. editText; import android. widget. toast; public class MainActivity extends Activity {// File file = new File ("data/com. wuyudong. rwinrom/info.txt "); @ Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_main); loadAccount ();} public void click (View v) {// obtain the account and password entered by the user EditText et_name = (EditText) findViewById (R. id. et_name); EditText et_pass = (EditText) findViewById (R. id. et_pass); String name = et_name.getText (). toString (); String pass = et_pass.getText (). toString (); // obtain the CheckBox component CheckBox cb = (CheckBox) findViewById (R. id. cb); // check whether the if (cb. isChecked () {saveAccount (name, pass) ;}// the Toast prompt box appears. makeText (this, "Logon successful", Toast. LENGTH_SHORT ). show ();} public void saveAccount (String name, String pass) {File file = new File ("data/com. wuyudong. rwinrom/info.txt "); try {FileOutputStream fos = new FileOutputStream (file); fos. write (name + "#" + pass ). getBytes (); fos. close ();} catch (Exception e) {e. printStackTrace () ;}} public void loadAccount () {File file = new File ("data/com. wuyudong. rwinrom/info.txt "); if (file. exists () {try {FileInputStream FCM = new FileInputStream (file); // convert byte stream to byte stream BufferedReader br = new BufferedReader (new InputStreamReader (FCM )); string text = br. readLine (); String [] s = text. split ("#"); // obtain the user-input account and password EditText et_name = (EditText) findViewById (R. id. et_name); EditText et_pass = (EditText) findViewById (R. id. et_pass); et_name.setText (s [0]); et_pass.setText (s [1]);} catch (Exception e) {e. printStackTrace ();}}}}