Android存储方式之文件存储数据

Android存储方式之文件存储数据_第1张图片
半边清醒,半边醉。

文件存储数据是指在Android系统中,直接把数据以文件的形式存储在设备中。Android系统提供了openFileOutput(String name,int mode):第一个参数是用于指定文件名称,第二个参数是用于指定文件存储的方式。如果文件不存在,Android系统会为我们自动的创建它,创建的文件被保存在/data/data//files目录下的。

第二个参数也就是文件的打开方式有:

MODE_PRIVATE:默认打开方式,表示文件是私有数据,在默认模式下,只能被本身的应用访问,在默认模式下,新写入内容会覆盖原文件的内容。

MODE_APPEND:该模式会先检查数据文件是否存在,如果存在就在该数据文件内容基础上追加新的内容,否则就创建新数据文件。

MODE_WORLD_READABLE:该模式下数据文件可以其他应用读取。

MODE_WORLD_WRITEABLE:该模式下数据文件可以被其他应用读取与写入。

Context提供的几个重要方法:

getDir(String name,int mode):在应用程序的数据文件下获取或者创建name对应的子目录。

File getFilesDir:获取应用程序数据文件的绝对路径。

String[] fileList():返回应用程序数据文件夹的全部文件。

下面附带一个简单的栗子:

先看布局:


Android存储方式之文件存储数据_第2张图片
基础布局

代码:

private EditText keyword;

private Button set_keyword;

private Button get_keyword;

private Button getDir;

private Button getFilesDir;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

keyword= (EditText) findViewById(R.id.keyword);

set_keyword= (Button) findViewById(R.id.set_keyword);

get_keyword= (Button) findViewById(R.id.get_keyword);

set_keyword.setOnClickListener(this);

get_keyword.setOnClickListener(this);

getDir= (Button) findViewById(R.id.getDir);

getFilesDir= (Button) findViewById(R.id.getFilesDir);

getDir.setOnClickListener(this);

getFilesDir.setOnClickListener(this);

}

@Override

public voidonClick(View v) {

switch(v.getId()){

caseR.id.set_keyword:

writeKeyworld(keyword.getText().toString());

Toast.makeText(MainActivity.this,"文件存储成功!",Toast.LENGTH_SHORT).show();

Toast.makeText(MainActivity.this,"文件的路径:"+getFilesDir(),Toast.LENGTH_SHORT).show();

break;

caseR.id.get_keyword:

Toast.makeText(MainActivity.this,readKeyworld().toString()+"",Toast.LENGTH_SHORT).show();

break;

caseR.id.getDir:

//在数据文件的目录下获取或者创建HelloAndroid的子目录(在HellAndroid目录不存在的时候)

Toast.makeText(MainActivity.this,"getDir:"+MainActivity.this.getDir("HelloAndroids", Context.MODE_PRIVATE),Toast.LENGTH_SHORT).show();

break;

caseR.id.getFilesDir:

//数据文件绝对路径

Toast.makeText(MainActivity.this,"getFilesDir:"+MainActivity.this.getFilesDir,Toast.LENGTH_SHORT).show();

break;

}

}

//使用openFileOutput指定打开指定文件,并指定写入模式

private voidwriteKeyworld(String msg) {

if(msg==""){

return;

}

try{

//通过openFileOutput拿到io流的FileOutputString对象

FileOutputStream fos=this.openFileOutput("message.txt",MODE_APPEND);

fos.write(msg.getBytes());

fos.close();

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

}

//使用openFileInput打开指定文件

privateString readKeyworld() {

String data="";

try{

FileInputStream fis=this.openFileInput("message.txt");

byte[] buffer=new byte[1024];

inthasRead=0;

StringBuilder sb=newStringBuilder();

while((hasRead=fis.read(buffer))!=-1){

sb.append(newString(buffer,0,hasRead));

}

data=sb.toString();

fis.close();

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

returndata;

}

运行结果:


Android存储方式之文件存储数据_第3张图片
点击获取密码


Android存储方式之文件存储数据_第4张图片
调用getDIR方法,可以在DDMS中查看被创建的子目录


Android存储方式之文件存储数据_第5张图片
调用getFilesDir()方法返回绝对路径

上面这个栗子只包括android文件存储的使用内置内存存储。那么问题来,怎么把数据存储在sd卡里边呢?下片博文说吧。

你可能感兴趣的:(Android存储方式之文件存储数据)