您的位置:首页 > 移动开发 > Android开发

安卓开发培训(3.1 文件读写)

2016-04-13 12:03 531 查看
文件读写是安卓开发中一种最基本的数据存储方式,也是初学者所能够想到的最自然的一种本地存储方式,它能够将所有的内容都原封不动的以文本的方式保存在文件中。
但是,许多初学者并不能理解这种方式的使用,一方面是因为调试起来并不方便,另一方面也因为实际使用比较麻烦,在实际使用中往往需要自行定义文件存储的格式等内容,因此理解起来存在一定的苦难。在本节中将使用一个最简单的栗子介绍基本的文件读写的方法。

首先定义一个方法save用来实现创建一个新文件并向其中写入文本:

public void save(){
String data = "greed is good";
FileOutputStream out = null;
BufferedWriter writer = null;

try {
out = openFileOutput("data", Context.MODE_APPEND);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(data);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(writer!=null){
try {
Log.e("cat","5");
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}


这里变量data中存放的是要写入的内容“greed is good”向魔兽致敬;FileOutputStream类型的变量out是一个文件输出流对象,其初始化参数中的第一个参数”data”是要保存的文件名,与之前的变量data没有任何关系,其第二个参数是文件写入的方式有Context.MODE_APPENDContext.MODE_PRIVATE两种,分别表示当文件已存在时将新的内容追加到文件尾部和替换当前文件。

BufferedWriter类型的对象writer定义了将流数据写入文件的操作,然后执行write操作将内容写入文件,这一过程是需要用try/catch进行包围的。

最后,在结束操作后使用writer.close()释放资源。

读取文件的方法load与写文件类似:

public void load(){
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();

try {
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while((line = reader.readLine())!=null){
content.append(line);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(reader!=null){
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Log.e("cat", "==============================");
Log.e("cat", content.toString());
}


最终读出的内容会被保存在content中。

之后可以在activity中添加两个按钮来进行操作:

but1 = (Button)findViewById(R.id.button1);
but1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
save();
}
});
but2 = (Button)findViewById(R.id.button2);
but2.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
load();
}
});


文件存储的默认位置在系统的/data/data/packagename/files/目录下,比如这里就是:/data/data/com/example/example_3_1/files/

运行结果大家自己看吧,我把代码传到百度网盘了,可以下下来运行。链接点这里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android android开发