开发手册 欢迎您!
软件开发者资料库

Android - 内部存储

Android内部存储 - 学习Android编程以及如何从环境设置,应用程序组件,活动生命周期,服务生命周期,应用程序架构,发布应用程序,调试应用程序,处理事件,布局,菜单,用户界面控件开始开发Android手机和ipad应用程序,样式和主题,处理轮换,字体管理,发送电子邮件,数据存储,管理媒体,发送短信,电话。

Android为应用程序提供了多种存储空间来存储数据.这些存储位置是共享首选项,内部和外部存储,SQLite存储以及通过网络连接存储.

在本章中,我们将介绍内部存储.内部存储是将私有数据存储在设备内存中.

默认情况下,这些文件是私有的,只有您的应用程序才能访问,并在用户删除您的应用程序时被删除.

写入文件

为了使用内部存储器在文件中写入一些数据,请使用文件名称调用openFileOutput()方法模式.该模式可以是私人的,公共e.t.c.它的语法在下面和下面给出;

FileOutputStream fOut = openFileOutput("file name here",MODE_WORLD_READABLE);


openFileOutput()方法返回FileOutputStream的一个实例.所以你在FileInputStream的对象中收到它.之后,您可以调用write方法在文件上写入数据.它的语法在下面和下面给出;

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


读取文件

为了从刚创建的文件中读取,请使用openFileInput()方法调用文件名.它返回FileInputStream的一个实例.它的语法在下面给出 :

FileInputStream fin = openFileInput(file);


之后,您可以调用read方法从文件中一次读取一个字符,然后打印它.它的语法在下面给出 :

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


除了写入和关闭方法之外, FileOutputStream 类还提供了其他方法来更好地写入文件.这些方法列在下面 :

Sr .NoMethod & description
1

FileOutputStream(File file, boolean append)

此方法构造一个写入文件的新FileOutputStream.

2

getChannel()

此方法返回一个只写的FileChannel,它与此流

3

getFD()

此方法返回基础文件描述符

4

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

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

除了读取和关闭方法之外, FileInputStream 类还提供了其他方法,以便更好地读取文件.这些方法列在下面 :

Sr .NoMethod & description
1

available()

此方法返回可以读取或跳过的估计字节数,不会阻塞更多输入

2

getChannel()

此方法返回一个只读的FileChannel它在这个流中的位置

3

getFD()

此方法返回基础文件描述符

4

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

此方法从此流中读取最多长度字节,并将它们存储在从offset

开始的字节数组b中

示例

这是一个演示如何使用内部存储的示例存储和读取文件.它创建了一个基本的存储应用程序,允许您从内部存储读取和写入.

要试验此示例,您可以在实际设备或模拟器中运行它.

步骤描述
1您将使用Android Studio IDE在com.example.sairamkrishna.myapplication包下创建Android应用程序.
2修改src/MainActivity.java文件以添加必要的代码.
3修改res/layout/activity_main以添加相应的XML组件
4运行应用程序并选择一个正在运行的Android设备并在其上安装应用程序和veri结果

以下是修改后的主要活动文件的内容 src/MainActivity.java .

package com.example.sairamkrishna.myapplication;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import java.io.FileInputStream;import java.io.FileOutputStream;public class MainActivity extends Activity  {   Button b1,b2;   TextView tv;   EditText ed1;   String data;   private String file = "mydata";   @Override   protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.activity_main);      b1=(Button)findViewById(R.id.button);      b2=(Button)findViewById(R.id.button2);      ed1=(EditText)findViewById(R.id.editText);      tv=(TextView)findViewById(R.id.textView2);      b1.setOnClickListener(new View.OnClickListener() {                  @Override         public void onClick(View v) {            data=ed1.getText().toString();            try {               FileOutputStream fOut = openFileOutput(file,MODE_WORLD_READABLE);               fOut.write(data.getBytes());               fOut.close();               Toast.makeText(getBaseContext(),"file saved",Toast.LENGTH_SHORT).show();            }            catch (Exception e) {               // TODO Auto-generated catch block               e.printStackTrace();            }         }      });      b2.setOnClickListener(new View.OnClickListener() {                  @Override         public void onClick(View v) {            try {               FileInputStream fin = openFileInput(file);               int c;               String temp="";               while( (c = fin.read()) != -1){                  temp = temp + Character.toString((char)c);               }               tv.setText(temp);               Toast.makeText(getBaseContext(),"file read",Toast.LENGTH_SHORT).show();            }            catch(Exception e){            }         }      });   }}


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

在以下代码中 abc 表示it1352的标识.com
                                                                  


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

   My Application


以下是 AndroidManifest.xml 文件的内容.

                                                                                          


让我们尝试运行我们刚刚修改的存储应用程序.我假设您在进行环境设置时创建了 AVD .要从Android工作室运行应用程序,请打开项目的一个活动文件,然后单击运行Eclipse Run Icon icon从工具栏. Android工作室在您的AVD上安装应用程序并启动它,如果您的设置和应用程序一切正常,它将显示以下模拟器窗口 :

Android内部Stroage教程

现在您需要做的是在字段中输入任何文本.例如,我输入了一些文字.按保存按钮.以下通知将出现在您的AVD :

Android内部Stroage教程

现在当您按下加载按钮时,应用程序将读取文件并显示数据.在我们的情况下,以下数据将返回&减去;

Android内部Stroage教程

请注意,您可以通过切换到DDMS选项卡实际查看此文件.在DDMS中,选择文件浏览器并导航此路径.

tools>android>android device Monitor


这也显示在下面的图片中.

Android内部Stroage教程