实验五 简单存储与文件存储.docx

上传人:b****5 文档编号:8793356 上传时间:2023-05-15 格式:DOCX 页数:21 大小:1.17MB
下载 相关 举报
实验五 简单存储与文件存储.docx_第1页
第1页 / 共21页
实验五 简单存储与文件存储.docx_第2页
第2页 / 共21页
实验五 简单存储与文件存储.docx_第3页
第3页 / 共21页
实验五 简单存储与文件存储.docx_第4页
第4页 / 共21页
实验五 简单存储与文件存储.docx_第5页
第5页 / 共21页
实验五 简单存储与文件存储.docx_第6页
第6页 / 共21页
实验五 简单存储与文件存储.docx_第7页
第7页 / 共21页
实验五 简单存储与文件存储.docx_第8页
第8页 / 共21页
实验五 简单存储与文件存储.docx_第9页
第9页 / 共21页
实验五 简单存储与文件存储.docx_第10页
第10页 / 共21页
实验五 简单存储与文件存储.docx_第11页
第11页 / 共21页
实验五 简单存储与文件存储.docx_第12页
第12页 / 共21页
实验五 简单存储与文件存储.docx_第13页
第13页 / 共21页
实验五 简单存储与文件存储.docx_第14页
第14页 / 共21页
实验五 简单存储与文件存储.docx_第15页
第15页 / 共21页
实验五 简单存储与文件存储.docx_第16页
第16页 / 共21页
实验五 简单存储与文件存储.docx_第17页
第17页 / 共21页
实验五 简单存储与文件存储.docx_第18页
第18页 / 共21页
实验五 简单存储与文件存储.docx_第19页
第19页 / 共21页
实验五 简单存储与文件存储.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

实验五 简单存储与文件存储.docx

《实验五 简单存储与文件存储.docx》由会员分享,可在线阅读,更多相关《实验五 简单存储与文件存储.docx(21页珍藏版)》请在冰点文库上搜索。

实验五 简单存储与文件存储.docx

实验五简单存储与文件存储

步骤1.

DataStorageDemoActivity实现的是简单存储。

Android为开发人员提供了简单的数据存储方法SharePreferences。

这是一种轻量级的数据保存方式,通过SharePreferences开发人员可以将NVP保存在Android的文件系统中,而且SharePreferences完全屏蔽对文件系统的操作过程,开发人员仅是通过调用SharePreferences对NVP进行保存和读取。

(1)在使用SharePreferences前,先定义SharePreferences的访问模式,此处将SharePreferences的访问模式设定为既可以全局读,也可以全局写:

publicstaticintMODE=Context.MODE_WORLD_READABLE+

Context.MODE_WORLD_WRITEABLE;

(2)定义SharePreferences的名称,这个名称与在Android文件系统中保存的文件同名。

只要具有相同的NVP内容,都会保存在同一个文件中。

publicstaticfinalStringPREFERENCE_NAME=“SaveSetting”;

(3)为了使用SharePreferences,需要将访问模式和SharePreferences名称作为参数,传递到getSharePreferences()函数,并获取到SharePreferences对象。

SharedPreferencessharedPreferences=getSharePreferences(PREFERENCE_NAME,MODE);

(4)在获取到SharedPreferences对象后,通过SharedPreferences.Editor类对SharedPreferences进行修改,最后调用commit()函数保存修改内容。

SharedPreferences.Ediroreditor=sharePreferences.edit();

Emit();

整体过程参见课本P153SimplePreferencesDemos示例。

重要代码:

//利用SharedPreference加载NVP数据

privatevoidLoadSharedPreference()

{

SharedPreferencessharedPreferences=getSharedPreferences(PREFERENCE_NAME,MODE);

Stringname=sharedPreferences.getString("Name","Tom");

intage=sharedPreferences.getInt("Age",20);

floatheight=sharedPreferences.getFloat("Height",1.81f);

nameText.setText(name);

ageText.setText(String.valueOf(age));

heightText.setText(String.valueOf(height));

}

//利用SharedPreference保存NVP数据

privatevoidSaveSharedPreference()

{

SharedPreferencessharedPreferences=getSharedPreferences(PREFERENCE_NAME,MODE);

SharedPreferences.Editoreditor=sharedPreferences.edit();

editor.putString("Name",nameText.getText().toString());

editor.putInt("Age",Integer.parseInt(ageText.getText().toString()));

editor.putFloat("Height",Float.parseFloat(heightText.getText().toString()));

mit();

}

DataStorageDemoActivity在onStart()函数中调用LoadSharedPreference()函数,读取保存在SharedPreference中的姓名、年龄和身高信息,并显示在用户界面上。

当Activity关闭时,在onStop()函数调用SaveSharedPreference(),保存界面上的信息。

程序运行出来的截图如下:

此程序运行后,通过FileExplorer查看/data/data下的数据,android为每个应用程序建立了与包同名的目录,用来保存应用程序产生的数据。

SharedPreference文件就保存在/data/data//shared_prefs目录下。

shared_prefs目录下生成的名为SaveSetting.xml的文件,文件大小为170字节,在Linux下的权限为“—rw—rw—rw”,r表示可读,w表示可写。

截图如下:

自己重写的截图如下:

需要注意的是改变AndroidManifest.xml文件,选择其中一个Activity有效启动。

这个修改代码如下:

步骤2.

InternalFileDemo实现的是文件存储,内部存储。

Android系统允许应用程序仅能够自身访问的私有文件,文件保存在设备的内部存储器上。

(1)首先定义建立文件的名称fileDemo.txt

(2)openFileOutput()函数为写入数据做准备而打开的应用程序私文件,如果指定文件不存在,则创建一个新的文件。

调用write()函数将数据写入文件,调用flush()函数将所有剩余的数据写入文件,并调用close()函数关闭FileOutputStream。

为了提高文件系统的性能,一般调用write()函数时,如果写入的数据量较小,系统会把数据保存在数据缓冲区中,等数据积累到一定程度时再一次性的写入文件中。

因此,在调用close()函数关闭文件前,务必要调用flush()函数,将缓冲区内所有的数据写入文件。

代码如下:

StringFILE_NAME=”fileDemo.txt”;

FileOutputStreamfos=openFileOutput(FILE_NAME,Context.MODE_PRIVATE);

Stringtext=“somedata”;

fos.write(text.getByte());

fos.flush();

fos.close();

(3)openFileInput()函数为读取数据做准备而打开的应用程序私文件。

使用openFileInput()函数打开已有文件的代码如下:

StringFILE_NAME=”fileDemo.txt”;

FileInputStreamfis=openFileInput(FILE_NAME);

Byte[]readBytes=newbyte[fis.available()];

While(fis.read(readBytes)!

=-1){}

此处代码应该使用try/catch捕获可能发生的异常。

(4)追加模式如果用户选择“追加模式”,数据将会添加到fileDemo.txt文件的结尾处。

通过“读取文件”按钮,程序会自动读取fileDemo.txt文件的内容,并显示

在界面下方的区域。

具体代码见课本P158InternalFileDemo示例。

主要代码如下:

writeButton.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

try{

if(checkBox.isChecked())

mode=Context.MODE_APPEND;

else

mode=Context.MODE_PRIVATE;

Stringtext=editText.getText().toString();

FileOutputStreamfos=openFileOutput(fileName,mode);

fos.write(text.getBytes());

fos.flush();

fos.close();

textView01.setText("文件写入成功,文件长度:

"+text.length());

textView02.setText("");

}catch(FileNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

});

readButton.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

try{

FileInputStreamfis=openFileInput(fileName);

if(fis.available()>0)

{

bytereadBytes[]=newbyte[fis.available()];

fis.read(readBytes);

Stringtext=newString(readBytes);

textView01.setText("文件读取成功,文件长度:

"+text.length());

textView02.setText(text);

}

}catch(FileNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

});

}

AndroidManifest.xml文件代码截图如下:

截图如下:

追加模式截图如下:

文件截图:

步骤3.

sdcardDemo利用Java.io.File及OutputStream实现SD卡文件存取。

Android的外部存储设备指的是SD卡。

是一种广泛使用于数码设备上的记忆卡,虽然并不是所有的Android手机都有SD卡,但Android系统提供了对SD卡的便捷的访问方法。

Android模拟器支持SD卡,但模拟器中没有默认的SD卡,开发人员必须在模拟器中手工添加SD卡的映像文件。

使用/tools目录下的mksdcard工具创建SD卡映像文件,命令如下:

Mksdcard-1SDCARD256ME:

\android\sdcard_file

用户首先通过“生成随机数列”按钮生成随机小数,然后通过“写入SD卡”按钮将生成的数据保存在SD卡的目录下。

参见课本P161SDcardFileDemo示例。

代码如下:

publicclasssdcardDemoextendsActivity{

privatestaticStringRandomNumberString="";

@Override

protectedvoidonCreate(BundlesavedInstanceState){

//TODOAuto-generatedmethodstub

super.onCreate(savedInstanceState);

setContentView(R.layout.sdcarddemo);

finalTextViewtextView01=(TextView)findViewById(R.id.sdcardtextView01);

finalTextViewtextView02=(TextView)findViewById(R.id.sdcardtextView02);

Buttonbutton1=(Button)findViewById(R.id.sdcardbutton01);

Buttonbutton2=(Button)findViewById(R.id.sdcardbutton02);

button1.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

RandomNumberString=String.valueOf(Math.random());

textView02.setText(RandomNumberString);

}

});

button2.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

StringFileName="SdCardFile"+System.currentTimeMillis()+".txt";

Filedir=newFile("/mnt/sdcard/");

if(dir.exists()&&dir.canWrite())

{

FilenewFile=newFile(dir.getAbsoluteFile()+"/"+FileName);

try{

newFile.createNewFile();

if(newFile.exists()&&newFile.canWrite())

{

FileOutputStreamfos=newFileOutputStream(newFile);

fos.write(RandomNumberString.getBytes());

fos.flush();

fos.close();

textView01.setText(FileName+"文件写入SD卡");

}

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

}

});

}

@Override

protectedvoidonDestroy(){

//TODOAuto-generatedmethodstub

super.onDestroy();

}

@Override

protectedvoidonRestart(){

//TODOAuto-generatedmethodstub

super.onRestart();

}

}

AndroidManifest.xml文件代码截图如下:

结果截图如下:

随机生成小数:

将随机生成小数写入SD卡:

步骤4.

ResourceFileDemo利用Java.io.File及OutputStream实现SD卡文件存取。

程序开发人员除了可以在内部存储设备和外部存储设备上使用文件外,还可以将程序开发阶段已经准备好的原始格式文件和XML文件分别存放在/res/raw和/res/xml目录下,供应程序在运行时进行访问。

主要代码如下:

button1.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

try{

InputStreaminputStream=resource.openRawResource(R.raw.raw_file);

byte[]reader=newbyte[inputStream.available()];

while(inputStream.read(reader)!

=-1)

{

}

textView02.setText(newString(reader,"utf-8"));

inputStream.close();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

});

button2.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

XmlPullParserparser=resource.getXml(R.xml.people);

Stringmsg="";

try{

while(parser.next()!

=XmlPullParser.END_DOCUMENT){

Stringpeople=parser.getName();

Stringname=null;

Stringage=null;

Stringheight=null;

if(people!

=null&&people.equals("person"))

{

intcount=parser.getAttributeCount();

for(inti=0;i

{

StringattrName=parser.getAttributeName(i);

StringattrValue=parser.getAttributeValue(i);

if(attrName!

=null&&attrName.equals("name"))

{

name=attrValue;

}

elseif(attrName!

=null&&attrName.equals("age"))

{

age=attrValue;

}

elseif(attrName!

=null&&attrName.equals("height"))

{

height=attrValue;

}

}

}

if(name!

=null&&age!

=null&&height!

=null)

{

msg+="姓名:

"+name+"年龄:

"+age+"身高:

"+height+"\n";

}

}

}catch(XmlPullParserExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

textView02.setText(msg);

}

});

button3.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

Stringmsg="";

textView02.setText(msg);

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2