android 内部存储实例,Android内部存储

Android提供多种存储的应用程序存储自己的数据。存储的地点是共享的,内部和外部存储,SQLite存储,并通过网络连接存储。

在本章中,我们要看看在内部存储。内部存储是设备存储器上的专用数据的存储。

默认情况下,这些文件是私有并由唯一应用程序访问和删除,当用户删除应用程序。

写入文件

为了使用内部存储写入某些数据到文件中,调用openFileOutput()方法用的文件和模式的名称。该模式可以是 private , public,它的语法如下:

FileOutputStreamfOut=openFileOutput("file name here",MODE_WORLD_READABLE);

该方法openFileOutput()返回FileOutputStream的一个实例。因此收到FileInputStream对象。之后可以调用write方法写入文件数据。它的语法如下:

Stringstr="data";fOut.write(str.getBytes());fOut.close();

读取文件

为了从刚才创建的文件中读取数据,openFileOutput()方法使用文件的名称。它返回FileInputStream的一个实例。它的语法如下:

FileInputStreamfin=openFileInput(file);

在此之后,可以调用read方法来一次从文件读取一个字符,然后打印出来。它的语法如下:

intc;Stringtemp="";while((c=fin.read())!=-1){temp=temp+Character.toString((char)c);}//string temp contains all the data of the file.fin.close();

除了写入(write)和关闭(close)方法,对于更好写入文件所提供FileOutputStream类的其他方法。这些方法如下:

Sr.No

方法及说明

1

FileOutputStream(File file, boolean append)

这个方法构造一个新的FileOutputStream写入到文件。

2

getChannel()

此方法返回分享与当前流的位置上只写FileChannel

3

getFD()

这个方法返回底层文件描述符

4

write(byte[] buffer, int byteOffset, int byteCount)

这个方法从字节数组缓冲区写入字节计数开始位置偏移此流

除了用于良好的读取文件所提供的FileInputStreamclass读取和关闭,还有其它方法的方法。这些方法如下:

Sr.No

方法及说明

1

available()

此方法返回可以读取或跳过没有阻止更多的输入字节的估计数目

2

getChannel()

此方法返回分享与当前流的位置只读FileChannel

3

getFD()

这个方法返回底层文件描述符

4

read(byte[] buffer, int byteOffset, int byteCount)

此方法最多读取length字节,并将它们存储字节数组b中开始的偏移offset

例子

这里有一个例子演示如何使用内部存储来存储和读取文件。它创建了一个基本的存储应用程序,它可以从内部存储读取并写入。

为了试验这个例子,可以在实际设备或模拟器运行此。

步骤

描述

1

使用Android Studio创建Android应用程序,并将其命名为: Storage 。在创建这个项目,确保目标SDK编译在Android SDK的最新版本或使用更高级别的API

2

修改src/MainActivity.java文件中添加必要的代码

3

修改res/layout/activity_main 添加相应XML组件

4

修改res/values/string.xml  添加必要的字符串

5

运行应用程序并选择运行Android的设备,并在其上安装的应用和验证结果

以下是修改的主活动文件的内容 src/com.yiibai.storage/MainActivity.java.

packagecom.example.storage;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.InputStreamReader;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.Menu;importandroid.view.View;importandroid.widget.EditText;importandroid.widget.Toast;publicclassMainActivityextendsActivity{privateEditTextet;privateStringdata;privateStringfile="mydata";@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);et=(EditText)(findViewById(R.id.editText1));}publicvoidsave(Viewview){data=et.getText().toString();try{FileOutputStreamfOut=openFileOutput(file,MODE_WORLD_READABLE);fOut.write(data.getBytes());fOut.close();Toast.makeText(getBaseContext(),"file saved",Toast.LENGTH_SHORT).show();}catch(Exceptione){// TODO Auto-generated catch blocke.printStackTrace();}}publicvoidread(Viewview){try{FileInputStreamfin=openFileInput(file);intc;Stringtemp="";while((c=fin.read())!=-1){temp=temp+Character.toString((char)c);}et.setText(temp);Toast.makeText(getBaseContext(),"file read",Toast.LENGTH_SHORT).show();}catch(Exceptione){}}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main,menu);returntrue;}}

以下是XML修改res/layout/activity_main.xml. 的内容

以下是 res/values/string.xml. 的内容

<?xml version="1.0"encoding="utf-8"?>StorageSettingsHello world!save to intenal storageload from intenal storag

以下是 AndroidManifest.xml 的内容

让我们试着来运行刚刚修改的存储应用程序。安装程序在AVD并启动它,如果一切设置和应用程序都没有问题,它会显示以下仿真器窗口:

c3f4cd4c3f5052f0a3b0be01174806ce.png

现在,需要做的是在字段中输入文本。举例来说:这里已经进入SOEM文本。按保存“save”按钮。以下通报会出现在AVD如下:

2fcb65bfcede5a1d6406d57b2999f1a7.png

现在,当按下Load按钮,应用程序将读取该文件,并显示数据。如下面的数据将返回:

c426b763baafd9216d6cce3421865927.png

注意:可以通过切换到DDMS标签查看此文件。在DDMS选择文件浏览器和浏览这个路径。

data>data>com.example.storage>files>mydata

这也显示在下面图中:

fd3b755bd32eb69584e3553ef4f1b5da.png

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值