编写项目,包含一个Activity。Activity页面效果如下图所示。在红色文本框中输入任意信息(输入不能为空,否则提示保存失败),点击保存按钮,将字符串以data.txt文件的形式保存到Android系统当中,点击读取按钮,将data.txt文件当中的字符串读取出来,并显示在Activity蓝色文本区域当中,注意在绿色方框中显示存储操作成功/失败的提示信息,例如“文件保存成功!”。
先写xml布局文件
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical"> 6 7 <LinearLayout 8 android:layout_width="match_parent" 9 android:layout_height="150dp" 10 android:orientation="vertical"> 11 12 <TextView 13 android:id="@+id/textView6" 14 android:layout_width="match_parent" 15 android:layout_height="55dp" 16 android:layout_weight="1" /> 17 <EditText 18 android:id="@+id/textView7" 19 android:layout_width="match_parent" 20 android:layout_height="match_parent" 21 android:layout_weight="1" /> 22 </LinearLayout>> 23 24 <LinearLayout 25 android:layout_width="wrap_content" 26 android:layout_height="wrap_content" 27 android:orientation="horizontal"> 28 29 <Button 30 android:id="@+id/button48" 31 android:layout_width="wrap_content" 32 android:layout_height="match_parent" 33 android:text="保存" /> 34 35 <Button 36 android:id="@+id/button49" 37 android:layout_width="wrap_content" 38 android:layout_height="match_parent" 39 android:text="读取" /> 40 </LinearLayout> 41 42 <EditText 43 android:id="@+id/textView8" 44 android:layout_width="match_parent" 45 android:layout_height="wrap_content" />> 46 47 </LinearLayout>
核心内容就是保存文件和读取文件,我们这里是内部存储,所以不用写分配权限
所以我们的思路就是在输入框输入,点击保存按钮,显示框弹出保存成功的提升,然后点击读取,读取框显示出我们刚刚输入的内容
代码
1 package com.example.app; 2 3 import androidx.annotation.RequiresApi; 4 import androidx.appcompat.app.AppCompatActivity; 5 6 import android.Manifest; 7 import android.os.Build; 8 import android.os.Bundle; 9 import android.view.View; 10 import android.widget.*; 11 12 import java.io.FileOutputStream; 13 import java.io.FileInputStream; 14 import java.security.Permission; 15 import java.security.Permissions; 16 17 18 public class MainActivity extends AppCompatActivity { 19 20 //private static String[] PERMISSIONS_STORAGE = { 21 // Manifest.permission.READ_EXTERNAL_STORAGE, 22 // Manifest.permission.WRITE_EXTERNAL_STORAGE 23 //};如果是外部存储就需要写这些 24 private TextView back_w; //提示框 25 private EditText write_w; //写入框 26 private EditText read_w; //读取框 27 private Button save_b; 28 private Button read_b; 29 30 @RequiresApi(api = Build.VERSION_CODES.M) 31 @Override 32 protected void onCreate(Bundle savedInstanceState) { 33 super.onCreate(savedInstanceState); 34 setContentView(R.layout.homework_8_1); 35 36 //this.requestPermissions(PERMISSIONS_STORAGE,1);外部存储权限 37 back_w = (TextView) findViewById(R.id.textView6); 38 write_w = (EditText) findViewById(R.id.textView7); 39 read_w = (EditText) findViewById(R.id.textView8);//实例化 40 41 save_b = (Button) findViewById(R.id.button48); 42 save_b.setOnClickListener(new View.OnClickListener() {//监听保存按钮 43 @Override 44 public void onClick(View v) { 45 String read_c = ""; //用来接收输入 46 read_c = write_w.getText().toString(); 47 if(read_c.equals("")){//判断输入是否为空 48 back_w.setText("输入不能为空,保存失败!"); 49 }else { 50 save(read_c); //调用保存方法 51 back_w.setText("保存成功!"); 52 } 53 } 54 }); 55 56 read_b = (Button) findViewById(R.id.button49); 57 read_b.setOnClickListener(new View.OnClickListener() {//监听读取按钮 58 @Override 59 public void onClick(View v) { 60 //如果没有保存文件,肯定就无法解析,所以还是得来个判断,判断是否有保存文件,该怎么判断呢??? 61 read();//调用读取方法 62 } 63 }); 64 } 65 66 public void save(String save_w){//保存方法 67 String filename = "data.txt"; 68 String content = save_w; 69 FileOutputStream fos; 70 try{ 71 fos = openFileOutput(filename,MODE_PRIVATE); 72 fos.write(content.getBytes()); 73 fos.close(); 74 }catch (Exception e){ 75 e.printStackTrace(); 76 } 77 } 78 79 public void read(){//读取方法 80 String content = ""; 81 FileInputStream fis; 82 try { 83 fis = openFileInput("data.txt"); 84 byte[] buffer = new byte[fis.available()]; 85 fis.read(buffer); 86 content = new String(buffer); 87 fis.close(); 88 }catch (Exception e){ 89 e.printStackTrace(); 90 } 91 read_w = (EditText) findViewById(R.id.textView8); 92 read_w.setText(content); 93 } 94 }
结果如图