博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android课程---关于数据存储的学习
阅读量:6243 次
发布时间:2019-06-22

本文共 5057 字,大约阅读时间需要 16 分钟。

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"));    }}

数据存储总结之思维导图:

 

转载于:https://www.cnblogs.com/0927wyj/p/5379476.html

你可能感兴趣的文章
深析Vue双向数据绑定(MVVM模型)
查看>>
【跃迁之路】【485天】程序员高效学习方法论探索系列(实验阶段242-2018.06.05)...
查看>>
react如果你想为一个组件返回多个元素怎么办?
查看>>
mybatis 为什么每次插入的时候总会创建一个SqlSession?
查看>>
Vue 教程第十六篇—— Vuex 之 action
查看>>
javaScript旋转Base64图片并得到新的base64数据
查看>>
使用opennlp自定义命名实体
查看>>
浅析k8s service的应用
查看>>
Node.js性能分析神器Easy-Monitor
查看>>
css基础—字体那些事
查看>>
性能优化之MySQL调优篇
查看>>
Angular开发实践(七): 跨平台操作DOM及渲染器Renderer2
查看>>
Laravel 教程 - 实战 iBrand 开源电商 API 系统
查看>>
vue-cli的坑,loader重复的锅 Invalid CSS after "...load the styles"
查看>>
手写Spring之IOC基于xml动态创建对象
查看>>
聊聊reactive streams的tranform操作
查看>>
箭头函数与this
查看>>
Angular4学习笔记之DOM属性绑定
查看>>
java构造list,合并重复的数组
查看>>
紫书第四章例4-4信息解码Message Decoding (处理二进制字符的一种典型例题)
查看>>