安卓开发培训(3.1 文件读写)
2016-04-13 12:03
531 查看
文件读写是安卓开发中一种最基本的数据存储方式,也是初学者所能够想到的最自然的一种本地存储方式,它能够将所有的内容都原封不动的以文本的方式保存在文件中。
但是,许多初学者并不能理解这种方式的使用,一方面是因为调试起来并不方便,另一方面也因为实际使用比较麻烦,在实际使用中往往需要自行定义文件存储的格式等内容,因此理解起来存在一定的苦难。在本节中将使用一个最简单的栗子介绍基本的文件读写的方法。
首先定义一个方法save用来实现创建一个新文件并向其中写入文本:
这里变量data中存放的是要写入的内容“greed is good”向魔兽致敬;FileOutputStream类型的变量out是一个文件输出流对象,其初始化参数中的第一个参数”data”是要保存的文件名,与之前的变量data没有任何关系,其第二个参数是文件写入的方式有Context.MODE_APPEND和Context.MODE_PRIVATE两种,分别表示当文件已存在时将新的内容追加到文件尾部和替换当前文件。
BufferedWriter类型的对象writer定义了将流数据写入文件的操作,然后执行write操作将内容写入文件,这一过程是需要用try/catch进行包围的。
最后,在结束操作后使用writer.close()释放资源。
读取文件的方法load与写文件类似:
最终读出的内容会被保存在content中。
之后可以在activity中添加两个按钮来进行操作:
文件存储的默认位置在系统的/data/data/packagename/files/目录下,比如这里就是:/data/data/com/example/example_3_1/files/
运行结果大家自己看吧,我把代码传到百度网盘了,可以下下来运行。链接点这里。
但是,许多初学者并不能理解这种方式的使用,一方面是因为调试起来并不方便,另一方面也因为实际使用比较麻烦,在实际使用中往往需要自行定义文件存储的格式等内容,因此理解起来存在一定的苦难。在本节中将使用一个最简单的栗子介绍基本的文件读写的方法。
首先定义一个方法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_APPEND和Context.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/
运行结果大家自己看吧,我把代码传到百度网盘了,可以下下来运行。链接点这里。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories