第四章数据存储.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第9章数据存储Android中5种数据存储方式①使用SharedPreferences临时文件存储首选项②文件存储数据③SQLite数据库存储数据④使用contentprovider存储数据(主要实现数据共享)⑤网络存储数据第一节SharedPreferencesSharedPreferences1、存储临时性数据,保证下一次进入该系统,能够获取该文件的数据,进行操作。存储数据和读取数据的流程:存储数据信息1)打开名为configuration的配置文件,如果存在则打开它,否则创建新的名为configuration的配置文件SharedPreferencessharedPreferences=getSharedPreferences(configuration,0);2)让sharedPreferences处于编辑状态SharedPreferences.Editoreditor=sharedPreferences.edit();3)存放数据editor.putString(name,harvey);4)完成提交editor.commit();读取数据信息1)打开名为configuration的配置文件SharedPreferencessharedPreferences=getSharedPreferences(configuration,0);2)获取数据Stringname=sharedPreferences.getString(name,默认值);获取SharedPreferences对象方法SharedPreferencespre=Context.getSharedPreferences(Stringname,intmode);注:name为本组件的配置文件名(如果想要与本应用程序的其他组件共享此配置文件,可以用这个名字来检索到这个配置文件,在这里要特别注意,因为在Android中已经确定了SharedPreferences是以xml形式保存,所以,在填写文件名参数时,不要给定“.xml”后缀,android会自动添加。只要直接写上文件名即可。它会直接被保存在/data/data/packagename/shared_prefs路径下,它是采用键值对的形式保存参数。当你需要获得某个参数值时,按照参数的键索引即可)。SharedPreferences支持的三种访问模式(这三种模式可以由Activity调用:1、MODE_PRIVATE:只有创建这个SharedPreferences的Activity与权限读写它。2、MODE_WORLD_READABLE:其他Activity对这个SharedPreferences具有可读权限。3、MODE_WORLD_WRITEABLE:其他Activity对这个SharedPreferences也具有可读可写的权利练习第二节文件存储简介利用SharedPreferences只能保存简单的数据,要存储更多类型的数据,则需要使用文件的存储操作。对于文件的存储操作,在Android中有两种形式。1、直接利用Activity提供的文件操作方法。此类操作的所有文件路径只能是“\data\data\pacagename\files\文件名称”2、利用javaIO流执行操作。此类操作的文件可以是任意路径(包括sdcard)下,但是需要为其操作授权。File类简介在java中,File类既可以表示文件又可以表示目录,它提供了操作文件或目录的一组方法1:Filef=newFile(F:\\java\\rose);(其中F:\java\rose是一个已经存在的目录),你可以调用file.exists()看目录是否存在,如存在则函数返回true,如不存在你可以调用file.mkdir();创建rose目录。2:Filefile=new(f,“file1.txt”);可以实例化F:\java\rose目录下的文件file1.txt(文件已存在),你可以调用file.exists()看文件是否存在,如存在则函数返回true,如不存在你可以调用file.createNewFile()创建file1.txt文件。注意,当你实例化一个已经存在的文件时,一定要加上后缀名,如.txt等,否则实例化的文件是不存在的。调用file.exists()返回false.Environment类简介Environment是一个提供访问环境变量的类。Environment常用方法:01.方法:getDataDirectory()02.解释:返回File,获取Android数据目录。03.方法:getDownloadCacheDirectory()04.解释:返回File,获取Android下载/缓存内容目录。05.方法:getExternalStorageDirectory()06.解释:返回File,获取外部存储目录即SDCard07.方法:getExternalStoragePublicDirectory(Stringtype)08.解释:返回File,取一个高端的公用的外部存储器目录来摆放某些类型的文件09.方法:getExternalStorageState()10.解释:返回File,获取外部存储设备的当前状态11.方法:getRootDirectory()12.解释:返回File,获取Android的根目录文件字节输入/输出流文件字节输入/输出流是指FileInputStream和FileOutputStream类,它们实现了对文件的顺序访问,并以字节为单位进行读/写操作FileOutputStream用于将字节数据写出到文件。继承自OutputStream类构造方法摘要FileOutputStream(Filefile)创建一个向指定File对象表示的文件中写入数据的文件输出流。FileOutputStream(Filefile,booleanappend)创建一个向指定File对象表示的文件中写入数据的文件输出流。FileOutputStream(FileDescriptorfdObj)创建一个向指定文件描述符处写入数据的输出文件流,该文件描述符表示一个到文件系统中的某个实际文件的现有连接。FileOutputStream(Stringname)创建一个向具有指定名称的文件中写入数据的输出文件流。FileOutputStream(Stringname,booleanappend)创建一个向具有指定name的文件中写入数据的输出文件流。常用方法Close():关闭缓冲输出流并释放与此流有关的所有系统资源。Write(intb):将指定的字节写入此缓冲输出流Write(byte[]b):将b.length个字节写入此缓冲输出流。案例Filefile=newfile(“d:\test.txt);FileOutputStreamfos=newFileOutputStream(file);Stringx=“iamok”Fos.write(x.getbytes())Fos.closeFileInputStream一、构造方法FileInputStream(Stringname);//使用给定的文件名创建对象FileInputStream(Filefile);//使用File对象创建FileInputStream对象二、读取文件1.使用文件输入流读取文件FileInuputStreamistream=newileInputStream(myfile.dat);或:Filef=newFile(myfile.dat);FileInputStreamistream=newFileInputStream(f);构造方法可能会产生异常IOException,故为了把一个文件输入流对象与一个文件关联起来,需:try{FileInputStreamins=newFileInputStream(myfile.dat);}catch(IOExceptione){System.out.println(Filereaderror:+e);}2.从输入流中读取字节intread();//从输入流中读取单个字节数据(0~255),如到输入流末尾则返回-1intread(byteb[]);//读多个字节intread(byteb[],intoff,intlen);3.关闭流Java在程序结束时自动关闭所有打开的流,但显式关闭任何打开的流是一个好习惯。close();FileInputStream使用案例FileInputStreamf=FileInputStream(/home/software....../root/ends,jsp);BufferedInputStreambu=newBufferedInputStream(f);bytea[]=newbyte[10];intn;while((n=bu.read(a))!=-1){Strings=newString(a,o,n)out.println(s);}f.close();bu.close();read返回的是一个整型的数,当到文件的尾时候返回-1,也就是说read一次读取的字节数为字节数组的长度。SQLite简单介绍SQ为StructuredQuery(结构化查询)的缩写,Lite表示轻量级。SQLite是一款开源的关系型数据库。几乎可以支持所有现代编程语言和各种操作系统对SQLite数据库的操作一般包括:创建一个数据库,打开数据库,关闭数据库,删除数据库。创建和打开数据库的方法:使用openOrCreateDatabase()方法来创建,若数据库不存在,则会创建新数据库,若存在,则打开数据库。openOrCreateDatabase()方法的返回值为一个SQLiteDatabase对象openOrCreateDatabase()方法的官方说明publicSQLiteDatabaseopenOrCreateDatabase(Stringname,intmode,SQLiteDatabase.CursorFactoryfactory)第一个参数————为数据库的名字,string类型。第二个参数————为常量,如下所示常量含义MODE_PRIVATE默认模式,值为0,文件只可以被调用该方法的应用程序访问MODE_WORLD_READABLE所有的应用程序都具有对该文件读的权限。MODE_WORLD_WRITEABLE所有的应用程序都具有对该文件写的权限。第三个参数————当query方法被调用时,用来实例化cursor,通常为null例如:SQLiteDatabasesld==this.openOrCreateDatabase(“teacher.db,0,null);关闭SQLite数据库对数据库操作完毕之后,就要关闭数据库,否则会抛出SQLiteException异常。关闭数据库只需调用成SQLiteDatabase对象的.close()方法即可。例如:sld.close()删除数据库直接调用deleteDatabase()方法即可,如:例如:this.deleteDatabase(“teacher.db);SQLite数据库中(Table)“表”的操作方法首先要明确一点的是,一个数据库可以有很多表,一个表中包含很多条数据,也就是说,在数据库里面保存数据其实是保存在Table(表)里面的。对已经存在和已经创建的数据库操作一般包括:创建表,往表添加数据,从表中删除数据,修改表中的数据,查询表中的数据,删除已存在的表。创建一个表通过调用数据库的execSQL(Stringsql)方法可以创建一个table(表)publicvoidexecSQL(Stringsql)execSQL(Stringsql)方法的参数

1 / 42
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功