文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android 数据存储方式有哪几种

2022-06-06 09:39

关注

以下内容给大家介绍Android数据存储提供了五种方式:

1、SharedPreferences

2、文件存储

3、SQLite数据库

4、ContentProvider

5、网络存储

  本文主要介绍如何使用文件来存储数据。Android文件操作用到的是Java.IO中的FileOutputStream和FileInputStream类。

一、存储文件

  首先实例化一个FileOutputStream。

FileOutputStream foStream = openFileOutput(fileName, MODE_PRIVATE);
// fileName: 要写入文件的名称
// MODE_PRIVATE: 为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
// MODE_APPEND: 模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
// MODE_WORLD_READABLE: 表示当前文件可以被其他应用读取,不推荐使用
// MODE_WORLD_WRITEABLE: 表示当前文件可以被其他应用写入,不推荐使用

  然后调用foStream.write()即可完成写入。

byte[] buffer = fileContent.getBytes();
foStream.write(buffer);
Toast.makeText(MainActivity.this, "写入成功",Toast.LENGTH_SHORT).show();

  最后进行一些清理工作,刷新写出流和关闭流。

foStream.flush();
foStream.close();

二、读取文件

  同样的,首先实例化一个FileInputStream。

FileInputStream fiStream = openFileInput(fileName)

  然后调用fiStream.read()即可

int len = fiStream.available();
byte[] buffer = new byte[len];
fiStream.read(buffer)

  最后,将文本显示并关闭读文件流

etContent.setText(new String(buffer));
Toast.makeText(MainActivity.this, "读取成功",Toast.LENGTH_SHORT).show();
fiStream.close();

三、完整代码


import android.support.v.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.Toast;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 public class MainActivity extends AppCompatActivity {
   private EditText etName;
   private EditText etContent;
   private Button btnWrite;
   private Button btnRead;
   private String fileName = "";
   private String fileContent = "";
   @Override
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     etName = (EditText)findViewById(R.id.etName);
     etContent = (EditText)findViewById(R.id.etContent);
     btnWrite = (Button)findViewById(R.id.btnWrite);
     btnRead = (Button)findViewById(R.id.btnRead);
     btnWrite.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
         fileName = etName.getText().toString();
         fileContent = etContent.getText().toString();
         try {
           FileOutputStream foStream = openFileOutput(fileName, MODE_PRIVATE);
           byte[] buffer = fileContent.getBytes();
           foStream.write(buffer);
           Toast.makeText(MainActivity.this, "写入成功",Toast.LENGTH_SHORT).show();
           foStream.flush();
           foStream.close();
         }catch(Exception e){
           e.printStackTrace();
         }
       }
     });
     btnRead.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
         fileName = etName.getText().toString();
         try{
           FileInputStream fiStream = openFileInput(fileName);
           int len = fiStream.available();
           byte[] buffer = new byte[len];
           fiStream.read(buffer);
           etContent.setText(new String(buffer));
           Toast.makeText(MainActivity.this, "读取成功",Toast.LENGTH_SHORT).show();
           fiStream.close();
         }catch(Exception e){
           e.printStackTrace();
         }
       }
     });
   }
 }
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
   <EditText
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:id="@+id/etName"
     android:layout_alignParentTop="true"
     android:layout_alignParentLeft="true"
     android:layout_alignParentStart="true"
     android:layout_alignParentRight="true"
     android:layout_alignParentEnd="true"
     android:text="文件名" />
   <EditText
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:id="@+id/etContent"
     android:layout_below="@+id/etName"
     android:layout_alignParentLeft="true"
     android:layout_alignParentStart="true"
     android:layout_alignParentRight="true"
     android:layout_alignParentEnd="true"
     android:text="文件内容" />
   <Button
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="保存"
     android:id="@+id/btnWrite"
     android:layout_alignTop="@+id/btnRead"
     android:layout_toLeftOf="@+id/btnRead"
     android:layout_toStartOf="@+id/btnRead" />
   <Button
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="读取"
     android:id="@+id/btnRead"
     android:layout_below="@+id/etContent"
     android:layout_alignParentRight="true"
     android:layout_alignParentEnd="true" />
 </RelativeLayout>
您可能感兴趣的文章:如何获取Android设备挂载的所有存储器android中使用SharedPreferences进行数据存储的操作方法Android调用相机并将照片存储到sd卡上实现方法Android App将数据写入内部存储和外部存储的示例Android编程中的5种数据存储方式Android7.0版本影响开发的改进分析Android 7.0新特性详解详解Android 7.0 Settings 加载选项Android 7.0中拍照和图片裁剪适配的问题详解Android 7.0调用相机崩溃详解及解决办法Android 7.0 Nougat不得不知的11项新功能Android 7.0开发获取存储设备信息的方法


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯