zoukankan      html  css  js  c++  java
  • Android课程---关于数据存储的学习

    activity_data1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <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/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.hanqi.test5.DataActivity1"
        android:orientation="vertical">
    
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/et_1"
            android:hint="key"/>
    
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/et_2"
            android:hint="value"/>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="保存"
                android:layout_weight="1"
                android:onClick="bt1_OnClick"/>
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="读取"
                android:layout_weight="1"
                android:onClick="bt2_OnClick"/>
        </LinearLayout>
    
    
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/et_3"
            android:hint="要存储的内容"/>
    
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/et_4"
            android:hint="从文件中读取的内容"/>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="保存"
                android:layout_weight="1"
                android:onClick="bt3_OnClick"/>
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="读取"
                android:layout_weight="1"
                android:onClick="bt4_OnClick"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="保存文件"
                android:layout_weight="1"
                android:onClick="bt5_OnClick"/>
    
            <Button
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="读取文件"
                android:layout_weight="1"
                android:onClick="bt6_OnClick"/>
        </LinearLayout>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/vipflower"
            android:id="@+id/iv_4"/>
    </LinearLayout>

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

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

  • 相关阅读:
    \r,\n,\r\n的区别
    \r,\n,\r\n的区别
    C# TextBox 换行 滚动到最后一行
    C# TextBox 换行 滚动到最后一行
    C# Textbox 始终保持最后最后一行
    C# Textbox 始终保持最后最后一行
    踩坑之mongodb配置文件修改
    踩坑之mongodb配置文件修改
    开启mongodb 的web
    开启mongodb 的web
  • 原文地址:https://www.cnblogs.com/0927wyj/p/5379476.html
Copyright © 2011-2022 走看看