Android 中数据存储的方式

Android 中数据存储的方式

内部存储

注释:内部存储和外部存储都是手机内存的一部分,与移动存储方式无关

  • 内部存储指的是android系统将数据存储在data/data/应用包名/files/自定义文件名 下的数据存储方式,仅限于本应用对其访问(读写数据)

  • 数据存储流程:

    • 声明输入输出流对象

    • 获取输入输出流对象(调用openFileInput/Output())

    • 文件读取、写入逻辑

    • 判断并关闭流对象

    public class MainActivity extends AppCompatActivity {
       byte[] buffer=null;
       @Override
       protected void onCreate(@Nullable Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
           EditText et_info1=findViewById(R.id.et_info1);
           EditText et_info2=findViewById(R.id.et_info2);
           findViewById(R.id.btn_write).setOnClickListener(new View.OnClickListener() {
               FileOutputStream fos=null;//声明字节输出流对象,用于数据的读取

               @Override
               public void onClick(View view) {

                   //文件写入
                   try {
                       fos=openFileOutput("input",MODE_PRIVATE);
                       String strs=et_info1.getText().toString();//获取输入编辑框的文本信息
                       fos.write(strs.getBytes());//将字符串转化为字节数组的形式,并写入到磁盘当中
                       fos.flush();
                  } catch (FileNotFoundException e) {
                       e.printStackTrace();
                  } catch (IOException e) {
                       e.printStackTrace();
                  }finally {
                       //此处一定要对fos先作判断再关闭,否则会出现空指针异常,fis同理
                       if (fos!=null){
                           try {
                               fos.close();
                               Toast.makeText(MainActivity.this,"数据写入成功",Toast.LENGTH_SHORT).show();
                          } catch (IOException e) {
                               e.printStackTrace();
                          }
                      }
                  }

              }
          });
           //读取文件信息
           findViewById(R.id.btn_read).setOnClickListener(new View.OnClickListener() {
               FileInputStream fis=null;//声明字节输入流对象,用于数据的写入
               @Override
               public void onClick(View view) {
                   try {
                       fis=openFileInput("input");
                       buffer=new byte[fis.available()];//初始化字节数组
                       fis.read(buffer);//输入流以字节的方式读数据
                  } catch (FileNotFoundException e) {
                       e.printStackTrace();
                  } catch (IOException e) {
                       e.printStackTrace();
                  }finally {
                       if (fis!=null){
                           try {
                               fis.close();
                               String data=new String(buffer);//将读取的字节数据以字符串的方式显示
                               et_info2.setText(data);
                               Toast.makeText(MainActivity.this,"数据读取成功",Toast.LENGTH_SHORT).show();
                          } catch (IOException e) {
                               e.printStackTrace();
                          }

                      }
                  }
              }
          });
      }
    }
外部存储

与内部存储模式类似,但需要添加用户权限,并且流的创建方式不同

Android 中数据存储的方式

 

Android 中数据存储的方式

 

共享数据存储
sqlite数据存储

如何启动sqlite数据库:

  1. 在D:\Program Files\sdk\platform-tools目录下双击打开sqlite3.exe

  2. .exit 退出sqlite3数据库交互模式

或者:

  1. 在D:\Program Files\sdk\platform-tools目录下输入cmd 后回车

  2. 键入:adb shell 可以进入shell命令模式

  3. 键入:sqlite3既可打开sqlite3交互模式

  4. 键入:.exit 即可以退出数据库交互模式

  5.  

上一篇:Android 5.0 6.0 7.0 8.0 9.0 10.0 适配文件管理器应用安装


下一篇:Android版OpenCV图像处理技术亲自验证[四]之直方图的咆哮