android中数据的存储方式(一)File 和 SharedPreferences

android中的存储方式

android中的存储方式无非就是两种:①存储到本地文件,有File和SharedPreferences两种方式;②存储到数据库,也分根据方法不同也分为两种:一种是通过访问网络连接到服务器,然后再由服务器将数据存到数据库中,第二种是采用自带的sqlite数据库存储。


这次先介绍第一种方法(直接在类中写代码就可以,这里不过多解释,代码中有注释如下:):

①File:

代码中有注释如下:

/*存入数据*/
FileOutputStream fos=openFileOutput(“text.txt”,MainActivity.MODE_PRIVATE);
/*MODE_PRIVATE是替换数据;MODE_APPEND是附加数据*/
fos.write(“******”);
/*这里的内容只能是byte[]类型和int 类型,具体用法看应用。String 类型 转化为 byte[]类型 只需让变量引用getBytes()*/

/*读取数据:*/
FileInputStream fis=openFileInput(“text.txt”);
byte[] readBytes=new byte[fis.available()];
/*这个方法可以在读写操作前先得知数据流里有多少个字节可以读取*/
fis.read(readBytes);
String s =EncodingUtils.getString(bs, "UTF-8"); 
/*转化bs的类型与编码方式*/

其他的写法:

File file = new File("C:/java.txt");
        FileInputStream fis = new FileInputStream(file);//字节流
        BufferedReader br = new BufferedReader(new InputStreamReader(fis));
        //先是字节流转字符流,然后再加缓冲区
        String s = "";
        String re = "";
        while ((s = br.readLine()) != null) {
            re += s;
        }
        System.out.println(re);
        //读取数据

        FileOutputStream out = new FileOutputStream(file, true); // 如果追加方式用true
        StringBuffer sb = new StringBuffer();
        sb.append("-----------" + "------------\r\n");//在文件中加入换行,方便取数据
        out.write(sb.toString().getBytes("utf-8"));
        //保存数据

File中也可以存多个数据以及键值对的数据,只要转化成字节类型的就可以了


②SharedPreferences:
/*存入数据方法1*/
SharedPreferences   mySharedPreferences=getSharedPreferences("test", Activity.MODE_PRIVATE); 
/*第一个参数为要创建的文件名,第二参数是设置文件的权限*/
SharedPreferences.Editor editor = mySharedPreferences.edit();
 /*这个地方是修改的意思,获取sharePreferences修改的对象*/
    editor.putString("name", name); //键值对,以键寻值
    editor.putString("id", id);
    editor.putString("eatid", eatid);
    editor.putString("wearid", wearid);
    editor.putString("playid", playid);
    editor.commit();//提交or保存

    /*文件创建模式:Activity.MODE_APPEND
        如果该文件已经存在,然后将数据写入,而不是抹掉它现有文件的末尾。

        文件创建模式:MODE_PRIVATE
        默认模式,在那里创建的文件只能由应用程序调用,即为私有的

        文件创建模式:Activity.MODE_WORLD_READABLE
        允许所有其他应用程序有读取和创建文件的权限。

        文件创建模式:Activity.MODE_WORLD_WRITEABLE
        允许所有其他应用程序具有写入、访问和创建的文件权限。*/

 /*存入数据方法2*/
 SharedPreferences  mySharedPreferences=getSharedPreferences("test", Activity.MODE_PRIVATE); 
 mySharedPreferences.edit().putString("name", name).putString("id", id).commit();
 /*这里只存入了两条数据*/

/*读取数据*/
SharedPreferences ss= getSharedPreferences("test", Activity.MODE_PRIVATE);
//这里和存入数据的时候一样
String name = ss.getString("name", "zwq");
/*如果name键的值为空,name就会获得"zwq"*/
String id = ss.getString("id", "");

这种方法是比较简单的,虽然用的不多,但是也比较重要。


不知道你们是不是有这个强迫症,就是非要看到实际的数据在文件中显示才舒服。看存储的数据方法也很简单,在手机下下载一个ES文件浏览器,找到根目录/data/data下 找到你的项目的包名,然后去找文件吧;如果什么文件都没有,那说明文件被隐藏了。root一下手机,然后把ES文件浏览器中的root工具箱↓打开,就可以看了。

这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验报告封面 课程名称: Android平台开发与应用 课程代码: SM3004 任课老师: 梁郁君 实验指导老师: 梁郁君 实验报告名称:实验10 Android数据存储与IO 学生姓名: 学号: 教学班: 递交日期: 签收人: 我申明,本报告内的实验已按要求完成,报告完全是由我个人完成,并没有抄袭行 为。我已经保留了这份实验报告的副本。 申明人(签名): 实验报告评语与评分: 评阅老师签名: 一、实验名称:Android数据存储与IO 二、实验日期:2014/11/13 三、实验目的: 1、掌握SharedPreferences存储数据的格式及位置,能够读写其他应用程序的Shared Preferences。 2、File存储数据 3、掌握SQLite存储数据方法。 4、会使用SQLiteOpenHelper辅助类,进行操作数据库。 四、实验用的仪器和材料: PC+Eclipse+ADT 五、实验的步骤和方法: 1、读写其他应用程序SharedPreferences。 读写其他应用程序的SharedPreferences,步骤如下: 创建应用App1 和应用App2,App2尝试读取App1的SharedPreferences内容 在App2 需要创建App1对应的Context。 调用App1的Context的getSharedPreferences(String name,int mode) 即可获取相应的SharedPreferences对象。 如果需要向App1的SharedPreferences数据写入数据,调用SharedPreferences的e dit()方法获取相应的Editor即可。 根据上述说明和下面截图,以及代码注释,完成相关代码片段填空,并思考问题: SharedPreferences何时会丢失? 图1 App1运行的界面 图2 App2 运行结果 App1:记录应用程序的使用次数,/com.Test/UseCount.java程序如下,补充程序所缺 代码: "import android.app.Activity; " "import android.content.SharedPreferences; " "import android.content.SharedPreferences.Editor; " "import android.os.Bundle; " "import android.widget.Toast; " "public class UseCount extends Activity{ " "SharedPreferences preferences; " "@Override " "public void onCreate(Bundle savedInstanceState){ " "super.onCreate(savedInstanceState); " "setContentView(R.layout.main); " "preferences = getSharedPreferences("count", MODE_WORLD_READABLE); " "//读取SharedPreferences里的count数据 " "int count = ("count" , 0); " "//显示程序以前使用的次数 " "Toast.makeText(this , "程序以前被使用了" + count + "次。", " "10000).show(); " "Editor editor = ; " "//存入数据 " "editor.putInt("count" , ++count); " "//提交修改 " "editor. ; " "} " "} " App2:ReadOtherPreferences.java代码如下,补充程序所缺代码: "import android.app.Activity; " "import android.content.Context; " "import android.content.SharedPreferences; " "import " "android.content.pm.PackageManager.NameNotFoundException; " "import android.os.Bundle; " "import android.widget.TextView; " "public class ReadOtherPreferences extends Activity{ " "Context useCount; " "@Override " "public void onCreate(Bundle sav

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值