activity_data1.xml
DataActivity1.java
package com.hanqi.test5;import android.content.SharedPreferences;import android.content.res.AssetManager;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.EditText;import android.widget.ImageView;import android.widget.Toast;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.PrintStream;public class DataActivity1 extends AppCompatActivity { EditText et_1; EditText et_2; EditText et_3; EditText et_4; ImageView iv_4; SharedPreferences sp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_data1); et_1 = (EditText)findViewById(R.id.et_1); et_2 = (EditText)findViewById(R.id.et_2); et_3 = (EditText)findViewById(R.id.et_3); et_4 = (EditText)findViewById(R.id.et_4); iv_4 = (ImageView)findViewById(R.id.iv_4); //1.获取sp实例,指定了文件名和操作模式 sp = getSharedPreferences("mydata",MODE_PRIVATE); } //操作assets内的文件 public void bt5_OnClick(View v) { //1.获取AssetManager管理器 AssetManager am = getAssets(); try { //2.打开文件,获取输入流 InputStream is = am.open("yuantu.png"); //3.获取输出流 FileOutputStream fos = openFileOutput("yuantu.png",MODE_PRIVATE); //4.边读边写 byte[] b = new byte[1024]; int i =0; while ((i = is.read(b))>0) { fos.write(b,0,i); } fos.close(); is.close(); Toast.makeText(DataActivity1.this, "保存成功", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); Toast.makeText(DataActivity1.this, "保存失败", Toast.LENGTH_SHORT).show(); } } //从手机内部存储读图片文件 public void bt6_OnClick(View v) { //改变ImageView的图片来源,指向手机存储空间 //1.获取文件存储的绝对路径 String filepath = getFilesDir().getAbsolutePath(); //2.组合图片文件的完整路径 filepath += "/yuantu.png"; //3.生成位图实例 Bitmap bm = BitmapFactory.decodeFile(filepath); //4.改变ImageView的图片来源 iv_4.setImageBitmap(bm); } //文件名 final String FILENAME = "test.txt"; public void bt3_OnClick(View v) { //1.获取要存储的内容 String content = et_3.getText().toString(); //2.获取输出流 try { FileOutputStream fos_1 = openFileOutput(FILENAME,MODE_APPEND); //3.构造PrintStream PrintStream pm = new PrintStream(fos_1); //4.写入内容 pm.println(content); //5.关闭 pm.close(); fos_1.close(); Toast.makeText(DataActivity1.this, "保存成功", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); Toast.makeText(DataActivity1.this, "保存失败", Toast.LENGTH_SHORT).show(); } } public void bt4_OnClick(View v) { try { //1.获取输入流 FileInputStream fis = openFileInput(FILENAME); //2.定义读取的数组 byte[] b = new byte[1024]; //3.读出的数据的长度 int i =0; StringBuilder sb_1 = new StringBuilder(); while ((i=fis.read(b))>0) { sb_1.append(new String(b,0,i) ); } fis.close(); //设置显示读出内容 et_4.setText(sb_1); Toast.makeText(DataActivity1.this, "读取成功", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); Toast.makeText(DataActivity1.this, "读取失败", Toast.LENGTH_SHORT).show(); } } //保存 public void bt1_OnClick(View v) { //1.获取key和value String key = et_1.getText().toString(); String value = et_2.getText().toString(); if (key.length() == 0 || value.length() == 0) { Toast.makeText(DataActivity1.this, "key或value不能为空", Toast.LENGTH_SHORT).show(); } else { //2.取得Editor SharedPreferences.Editor editor = sp.edit(); //3.放入键值对 editor.putString(key, value); //4.提交保存 boolean b = editor.commit(); if (b) { Toast.makeText(DataActivity1.this, "保存成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(DataActivity1.this, "保存失败", Toast.LENGTH_SHORT).show(); } } } //读取 public void bt2_OnClick(View v) { //1.获取要读的key String key = et_1.getText().toString(); //2.读并设置文本框 et_2.setText(sp.getString(key, "没有发现key")); }}
数据存储总结之思维导图: