保存游戏数据 下文详解SQLite存储方式并把SQLite的数据库文件存储在SD卡中Word文件下载.docx

上传人:b****8 文档编号:22267064 上传时间:2023-02-03 格式:DOCX 页数:33 大小:299.77KB
下载 相关 举报
保存游戏数据 下文详解SQLite存储方式并把SQLite的数据库文件存储在SD卡中Word文件下载.docx_第1页
第1页 / 共33页
保存游戏数据 下文详解SQLite存储方式并把SQLite的数据库文件存储在SD卡中Word文件下载.docx_第2页
第2页 / 共33页
保存游戏数据 下文详解SQLite存储方式并把SQLite的数据库文件存储在SD卡中Word文件下载.docx_第3页
第3页 / 共33页
保存游戏数据 下文详解SQLite存储方式并把SQLite的数据库文件存储在SD卡中Word文件下载.docx_第4页
第4页 / 共33页
保存游戏数据 下文详解SQLite存储方式并把SQLite的数据库文件存储在SD卡中Word文件下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

保存游戏数据 下文详解SQLite存储方式并把SQLite的数据库文件存储在SD卡中Word文件下载.docx

《保存游戏数据 下文详解SQLite存储方式并把SQLite的数据库文件存储在SD卡中Word文件下载.docx》由会员分享,可在线阅读,更多相关《保存游戏数据 下文详解SQLite存储方式并把SQLite的数据库文件存储在SD卡中Word文件下载.docx(33页珍藏版)》请在冰豆网上搜索。

保存游戏数据 下文详解SQLite存储方式并把SQLite的数据库文件存储在SD卡中Word文件下载.docx

80·

90·

100·

110·

120·

130·

140·

150

1.<

?

xmlversion="

1.0"

encoding="

utf-8"

>

2.<

LinearLayoutxmlns:

android="

3.android:

orientation="

vertical"

android:

layout_width="

fill_parent"

4.android:

layout_height="

5.<

TextViewandroid:

6.android:

wrap_content"

text="

保存数据练习!

"

7.android:

textSize="

20sp"

textColor="

#ff0000"

id="

@+id/tv_title"

/>

8.<

9.android:

请输入帐号"

10.<

EditTextandroid:

11.android:

@+id/editText_Login"

12.android:

<

/EditText>

13.<

14.android:

请输入密码"

15.<

16.android:

@+id/editText_Password"

17.android:

18.<

Buttonandroid:

@+id/button_save"

19.android:

保存"

/Button>

20.<

@+id/button_load"

21.android:

取出数据"

22.android:

visibility="

invisible"

23.<

/LinearLayout>

先把xml文件放上来的原因是因为我在此篇中介绍的SharedPreference和文件存储(FIleInputStream/FileOutputStream),都共用此xml,很简单,两个textview两个editview以及两个button,这里就不多说了;

下面是SharedPreference的代码实现和详细讲解:

[java:

1./**

2.*@authorHimi

3.*@保存方式:

SharedPreference

4.*@注意:

SharedPreference可以跨程序包使用,多谢二楼童鞋提醒!

5.*@操作模式:

Context.MODE_PRIVATE:

新内容覆盖原内容

6.*Context.MODE_APPEND:

新内容追加到原内容后

7.*Context.MODE_WORLD_READABLE:

允许其他应用程序读取

8.*Context.MODE_WORLD_WRITEABLE:

允许其他应用程序写入,会覆盖原数据。

9.*/

10.publicclassMainActivityextendsActivityimplementsOnClickListener{

11.privateEditTextet_login,et_password;

12.privateButtonbtn_save;

13.privateTextViewtv_title;

14.privateSharedPreferencessp;

15.@Override

16.publicvoidonCreate(BundlesavedInstanceState){

17.super.onCreate(savedInstanceState);

18.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

19.WindowManager.LayoutParams.FLAG_FULLSCREEN);

20.this.requestWindowFeature(Window.FEATURE_NO_TITLE);

21.setContentView(R.layout.main);

22.btn_save=(Button)findViewById(R.id.button_save);

23.btn_save.setOnClickListener(this);

24.et_login=(EditText)findViewById(R.id.editText_Login);

25.et_password=(EditText)findViewById(R.id.editText_Password);

26.tv_title=(TextView)findViewById(R.id.tv_title);

27.//这里我们先调用getSharedPreferences()来实例化一个SharedPreferences,

28.//第二个参数是指:

操作模式(上面对各种操作模式已有解释)

29.sp=getSharedPreferences("

Setting_himi"

MODE_PRIVATE);

30./*

31.*下面代码是我们要在程序刚启动的时候我们来读取之前的数据,

32.*当然我们还没有保存任何数据所以肯定找不到!

33.*如果找不到也没关系会默认返回一个参数值,看下面的方法含义便知!

34.*/

35.sp.getString("

login"

"

);

36.//getString()类似哈希表,一个key一个volue,

37.//这个方法如果找不到对应的第一个参数(key),那么将以第二个参数作为此key的返回值

38.et_login.setText(sp.getString("

));

39.et_password.setText(sp.getString("

password"

40.}

41.@Override

42.publicvoidonClick(Viewv){

43.if(v==btn_save){

44.if(et_login.getText().toString().equals("

))

45.tv_title.setText("

请输入帐号!

46.elseif(et_password.getText().toString().equals("

47.tv_title.setText("

请输入密码!

48.else{

49.sp.edit()

50..putString("

et_login.getText().toString())

51..putString("

et_password.getText().toString())

52..commit();

53.//从sp.edit()开始进入编辑状态,直到commit()提交!

54.tv_title.setText("

保存成功!

可重新打开此程序,测试是否已经保存数据!

+

55."

/n(或者在'

FileExplorer'

窗口下-data-data-com.himi路径下"

56."

是否存在"

+"

了'

Setting_himi.xml'

)"

57.}

58.}

59.}

60.}

代码中的注释的很清楚了,比较简单,不多说了。

《文件存储OutputStream/InputStream》

1.适合游戏存储,能存储较大数据;

2.不仅能存储到系统中,也能存储到SD卡中!

如果童鞋们对SQL不太熟习的话那么选择此种方式最为合适的啦、嘿嘿

Stream数据流方式

4.*@注意1:

默认情况下,使用openFileOutput方法创建的文件只能被其调用的应用使用,

5.*其他应用无法读取这个文件,如果需要在不同的应用中共享数据;

6.*

7.*@注意2:

因为androidos内部闪存有限,所以适合保存较少的数据,当然我们也有解决的方法,

8.*就是把数据保存在SD开中,这样就可以了,后面我也会向大家讲解!

9.*

10.*@提醒1调用FileOutputStream时指定的文件不存在,Android会自动创建它。

11.*另外,在默认情况下,写入的时候会覆盖原文件内容,如果想把新写入的内

12.*容附加到原文件内容后,则可以指定其mode为Context.MODE_APPEND。

13.*

14.*@提醒2启动程序就初始化的时候一定要注意处理!

代码中有注释!

一定要仔细看!

15.*

16.*@提醒3这里我给大家讲两种方式,一种是原生态file流来写入/读入,

17.*另外一种是用Data流包装file流进行写入/读入其实用data流来包装进行操作;

18.*原因是:

包装后支持了更多的写入/读入操作,比如:

file流写入不支持

19.*writeUTF(Stringstr);

但是用Data包装后就会支持。

20.*

21.*@操作模式:

22.*Context.MODE_APPEND:

23.*Context.MODE_WORLD_READABLE:

24.*Context.MODE_WORLD_WRITEABLE:

25.*/

26.publicclassMainActivityextendsActivityimplementsOnClickListener{

27.privateEditTextet_login,et_password;

28.privateButtonbtn_save;

29.privateTextViewtv_title;

30.privateFileOutputStreamfos;

31.privateFileInputStreamfis;

32.privateDataOutputStreamdos;

33.privateDataInputStreamdis;

34.@Override

35.publicvoidonCreate(BundlesavedInstanceState){

36.Stringtemp=null;

37.super.onCreate(savedInstanceState);

38.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

39.WindowManager.LayoutParams.FLAG_FULLSCREEN);

40.this.requestWindowFeature(Window.FEATURE_NO_TITLE);

41.setContentView(R.layout.main);

42.btn_save=(Button)findViewById(R.id.button_save);

43.btn_save.setOnClickListener(this);

44.et_login=(EditText)findViewById(R.id.editText_Login);

45.et_password=(EditText)findViewById(R.id.editText_Password);

46.tv_title=(TextView)findViewById(R.id.tv_title);

47.try{

48.//openFileInput不像sharedPreference中

49.//getSharedPreferences的方法那样找不到会返回默认值,

50.//这里找不到数据文件就会报异常,所以finally里关闭流尤为重要!

!

51.if(this.openFileInput("

save.himi"

)!

=null){

52.//--------------单纯用file来读入的方式-----------------

53.//fis=this.openFileInput("

54.//ByteArrayOutputStreambyteArray=new

55.//ByteArrayOutputStream();

56.//byte[]buffer=newbyte[1024];

57.//intlen=0;

58.//while((len=fis.read(buffer))>

0){

59.//byteArray.write(buffer,0,len);

60.//}

61.//temp=byteArray.toString();

62.//--------------用data流包装后的读入的方式------------

63.fis=this.openFileInput("

//备注1

64.dis=newDataInputStream(fis);

65.et_login.setText(dis.readUTF());

66.et_password.setText(dis.readUTF());

67.//这里也是在刚启动程序的时候去读入存储的数据

68.//读的时候要注意顺序;

例如我们写入数据的时候

69.//先写的字符串类型,我们也要先读取字符串类型,一一对应!

70.}

71.}catch(FileNotFoundExceptione){

72.//TODOAuto-generatedcatchblock

73.e.printStackTrace();

74.}catch(IOExceptione){

75.//TODOAuto-generatedcatchblock

76.e.printStackTrace();

77.}finally{

78.//在finally中关闭流!

因为如果找不到数据就会异常我们也能对其进行关闭操作;

79.try{

80.if(this.openFileInput("

81.//这里也要判断,因为找不到的情况下,两种流也不会实例化。

82.//既然没有实例化,还去调用close关闭它,肯定"

空指针"

异常!

83.fis.close();

84.}

85.}catch(FileNotFoundExceptione){

86.//TODOAuto-generatedcatchblock

87.e.printStackTrace();

88.}catch(IOExceptione){

89.//TODOAuto-generatedcatchblock

90.e.printStackTrace();

91.}

92.}

93.}

94.@Override

95.publicvoidonClick(Viewv){

96.if(Environment.getExternalStorageState()!

97.//这个方法在试探终端是否有sdcard!

98.Log.v("

Himi"

有SD卡"

99.}

100.if(v==btn_save){

101.if(et_login.getText().toString().equals("

102.tv_title.setText("

103.elseif(et_password.getText().toString().equals("

104.tv_title.setText("

105.else{

106.try{

107.//------单纯用file来写入的方式--------------

108.//fos=newFileOutputStream(f);

109.//fos.write(et_login.getText().toString().getBytes());

110.//fos.write(et_password.getText().toString().getBytes());

111.//------data包装后来写入的方式--------------

112.fos=this.openFileOutput("

//备注2

113.dos=newDataOutputStream(fos);

114.dos.writeUTF(et_login.getText().toString());

115.dos.writeUTF(et_password.getText().toString());

116.tv_title.setText("

可重新打开此程序,测试是"

117."

否已经保存数据!

118."

窗口下-data-data-com.himi-files路径下"

119."

是否存在了'

save.himi'

120.}catch(FileNotFoundExceptione){

121.//TODOAuto-generatedcatchblock

122.e.printStackTrace();

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

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1