Android中的数据存储1课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Android中的数据存储1课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 中的 数据 存储 课件
- 资源描述:
-
1、第第7 7章章 AndroidAndroid中的数据存取中的数据存取数据存储实例数据存储实例7.1 文件存储文件存储 android是基于是基于java语言的,在语言的,在java中提供了一套完整中提供了一套完整的输入输出流操作体系,与文件相关的有的输入输出流操作体系,与文件相关的有FileInputStream,FileOutputStream等,通过这些类可等,通过这些类可以非常方便地访问磁盘上的文件内容。同样的以非常方便地访问磁盘上的文件内容。同样的android也也支持这种方式来访问手机上的文件。支持这种方式来访问手机上的文件。Android手机中的文手机中的文件有两个存储位置:件有两
2、个存储位置:内置存储空间内置存储空间和和外部外部SD卡卡,针对不同,针对不同位置的文件的存储的有所不同,下面分别对它们的操作。位置的文件的存储的有所不同,下面分别对它们的操作。DiagramContextContext提供了如提供了如下两个方法来打下两个方法来打开本应用程序的开本应用程序的数据文件夹里的数据文件夹里的文件文件IOIO流。流。FileInputStreamFileInputStream openFileInputopenFileInput(String name):(String name):打开打开应用程序的数据文件夹下的应用程序的数据文件夹下的namename文件文件对应输入
3、流。对应输入流。FileOutputStream FileOutputStream openFileOutputopenFileOutput(String name,int(String name,int mode):mode):打开应用程序的数据文件夹下打开应用程序的数据文件夹下的的namename文件对应输出流。文件对应输出流。第一参数用于指定文件名称指定文件名称,不能包含路径分隔符不能包含路径分隔符“/”/”,如果文件不存在,Android Android 会自动创建它会自动创建它。第二参数用于指定操作模式指定操作模式,有四种模式。uContext.MODE_PRIVATE=Contex
4、t.MODE_PRIVATE=0 0:默认操作模式默认操作模式,代表该文件,代表该文件是私有数据,只能被应用本身访问,在该模式下,是私有数据,只能被应用本身访问,在该模式下,写入的写入的内容会覆盖原文件的内容内容会覆盖原文件的内容,如果想把新写入的内容追加到,如果想把新写入的内容追加到原文件中,可以使用原文件中,可以使用Context.MODE_APPEND Context.MODE_APPEND。uContext.MODE_APPEND=Context.MODE_APPEND=3276832768:模式会检查文件是否存在,模式会检查文件是否存在,存在就往文件存在就往文件追加内容,否则就创建新
5、文件追加内容,否则就创建新文件;uContext.MODE_WORLD_READABLE=Context.MODE_WORLD_READABLE=1 1:表示当前文件表示当前文件可以可以被其他应用读取被其他应用读取;uContext.MODE_WORLD_WRITEABLE=Context.MODE_WORLD_WRITEABLE=2 2:表示当前文件表示当前文件可以可以被其他应用写入被其他应用写入。7.1.17.1.1 手机内置存储空间文件的存取手机内置存储空间文件的存取如果希望如果希望文件被其他应用读和写文件被其他应用读和写,可以传入,可以传入:Context.MODE_WORLD_REA
6、DABLE+Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE Context.MODE_WORLD_WRITEABLE 应用程序的数据文件默认保存在应用程序的数据文件默认保存在/data/data/data/data/files/files目录下,文件的后缀名随意。目录下,文件的后缀名随意。7.1.17.1.1 手机内置存储空间文件的存取手机内置存储空间文件的存取在手机内置存储空间中创建文件、写入内容的一般步骤在手机内置存储空间中创建文件、写入内容的一般步骤:(1 1)调用)调用openFileOutput()openFileOu
7、tput()方法,传入文件的名称和操作方法,传入文件的名称和操作的模式,该方法将会的模式,该方法将会返回一个文件输出流返回一个文件输出流;(2 2)调用)调用writewrite()()方法,向这个文件输出流中方法,向这个文件输出流中写入内容写入内容;(3 3)调用)调用closeclose()()方法,方法,关闭文件输出流关闭文件输出流。读取手机内置存储空间中文件的一般步骤:读取手机内置存储空间中文件的一般步骤:(1 1)调用)调用openFileInput()openFileInput()方法,传入需要读取数据的文方法,传入需要读取数据的文件名,该方法将会返回一个文件输入流对象;件名,该方
8、法将会返回一个文件输入流对象;(2 2)调用)调用read()read()方法方法读取文件的内容读取文件的内容;(3 3)调用)调用close()close()方法,方法,关闭文件输入流关闭文件输入流。7.1.17.1.1 手机内置存储空间文件的存取手机内置存储空间文件的存取 1 1、当我们手机上不存在该文件时,我们、当我们手机上不存在该文件时,我们先写后读先写后读与与先先读后写读后写有区别吗?程序会不会出错?有区别吗?程序会不会出错?(具体做法具体做法:把手机上的:把手机上的content.txtcontent.txt文件删除,然后分别进文件删除,然后分别进行先写后读与先读后写操作,观察效果
9、)。行先写后读与先读后写操作,观察效果)。2 2、不同操作模式的区别,当我们多次执行写入操作时,、不同操作模式的区别,当我们多次执行写入操作时,文件里的内容文件里的内容是是被覆盖被覆盖还是不断的在文件末尾还是不断的在文件末尾附加新数据附加新数据?(具体做法具体做法:修改修改openFileOutput()openFileOutput()方法的第二个参数方法的第二个参数)。)。7.1.17.1.1 手机内置存储空间文件的存取手机内置存储空间文件的存取 单击单击writewrite按钮按钮,将第一个文本编辑框,将第一个文本编辑框(writeText)(writeText)的内容的内容写入到指定的文
10、件中写入到指定的文件中(content.txtcontent.txt),单击),单击readread按按钮钮,从指定的文件中从指定的文件中(content.txt)(content.txt)读取数据并显示在第二读取数据并显示在第二个文本框个文本框(readText)(readText)上上。7.1.1 7.1.1 案例案例程序清单:程序清单:FileTestFileTest resres layoutlayout activity_main.xmlactivity_main.xmlLinearLayout xmlns:android=http:/ android:orientation=ver
11、tical EditText android:hint=string/hint/Button android:text=string/write/设置文本输入框最少为两行设置文本输入框最少为两行设置文本输入框的提示信息设置文本输入框的提示信息7.1.1 7.1.1 案例案例 EditText android:hint=string/readhint/Button android:text=string/read/程序清单:程序清单:FileTestFileTest resres layoutlayout activity_main.xmlactivity_main.xml7.1.1 7.1.1
12、 案例案例 在在MainActivity.javaMainActivity.java中分别为写入内容和读取内容按钮添加事件处理中分别为写入内容和读取内容按钮添加事件处理.程序清单:程序清单:FileTestFileTest srcsrc ietiet jxufejxufe cncn androidandroid MainActivity.javaMainActivity.java public class MainActivity extends Activity public class MainActivity extends Activity private Button read,wr
13、ite;private Button read,write;private EditText readText,writeText;private EditText readText,writeText;private String fileName=content.txt;private String fileName=content.txt;public void onCreate(Bundle savedInstanceState)public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceStat
14、e);super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setContentView(R.layout.activity_main);read=(Button)findViewById(R.id.read);read=(Button)findViewById(R.id.read);write=(Button)findViewById(R.id.write);write=(Button)findViewById(R.id.write);readText=(EditText)findViewById(
15、R.id.readText);readText=(EditText)findViewById(R.id.readText);writeText=(EditText)findViewById(R.id.writeText);writeText=(EditText)findViewById(R.id.writeText);read.setOnClickListener(new OnClickListener()read.setOnClickListener(new OnClickListener()public void onClick(View v)public void onClick(Vie
16、w v)readText.setText(read();readText.setText(read();););设置保存的文件名设置保存的文件名获取读取内容按钮获取读取内容按钮获取写入内容按钮获取写入内容按钮添加事件处理添加事件处理将读取的内容显示在文本编辑框上将读取的内容显示在文本编辑框上7.1.1 7.1.1 案例案例 write.setOnClickListener(new OnClickListener()write.setOnClickListener(new OnClickListener()public void onClick(View v)public void onClic
17、k(View v)write(writeText.getText().toString();write(writeText.getText().toString();););public void write(String content)public void write(String content)try try FileOutputStream fos=openFileOutput(fileName,FileOutputStream fos=openFileOutput(fileName,Context.MODE_APPEND);Context.MODE_APPEND);当第二个参数为
18、当第二个参数为Context.MODE_PRIVATEContext.MODE_PRIVATE时,后写入的内容会覆盖原有内容。时,后写入的内容会覆盖原有内容。PrintStream ps=new PrintStream(fos);PrintStream ps=new PrintStream(fos);ps.print(content);ps.print(content);catch(Exception e)catch(Exception e)e.printStackTrace();e.printStackTrace();将文本编辑框的内容写入文件将文本编辑框的内容写入文件该方法将字符串内容写入
19、文件该方法将字符串内容写入文件程序清单:程序清单:FileTestFileTest srcsrc ietiet jxufejxufe cncn androidandroid MainActivity.javaMainActivity.java7.1.1 7.1.1 案例案例 public String read()public String read()StringBuilder sbBuilder=new StringBuilder();StringBuilder sbBuilder=new StringBuilder();try try FileInputStream is=openFil
20、eInput(fileName);FileInputStream is=openFileInput(fileName);byte buffer=new byte64;byte buffer=new byte64;int hasRead;int hasRead;while(hasRead=is.read(buffer)!=-1)while(hasRead=is.read(buffer)!=-1)sbBuilder.append(new String(buffer,0,hasRead);sbBuilder.append(new String(buffer,0,hasRead);catch(Exce
21、ption e)catch(Exception e)e.printStackTrace();e.printStackTrace();return sbBuilder.toString();return sbBuilder.toString();程序清单:程序清单:FileTest/src/iet/jxufe/cn/android/MainActivity.javaFileTest/src/iet/jxufe/cn/android/MainActivity.java该方法用于读取文件信息,并以字符串返回该方法用于读取文件信息,并以字符串返回获取文件输入流获取文件输入流定义缓冲区的大小定义缓冲区的
展开阅读全文