Android-文件存储
2016-05-06 23:02
417 查看
目标效果:
![](http://img.blog.csdn.net/20160506222123868?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160506222156800?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160506222233863?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
程序运行,显示一输入框和按钮,在输入框输入内容点击按钮会提示保存成功,关闭程序,再次打开会在输入框显示刚才输入的内容,并提示英文。
1.activity_main.xml页面放置两个控件。
activity_main.xml页面:
2.新建FileService.java类,编写保存和读取方法。
FileService.java页面:
3.写完保存方法和读取方法,可以先不写MainActivity.java的代码,先写一个fileText.java类进行单元测试,检测保存方法和读取方法是否有错误。
fileText.java页面:
4.编写完测试类后,开始测试运行,两个方法的运行方式都一样。
![](http://img.blog.csdn.net/20160506225013477?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
5.测试运行后,如果在左上角出现绿色横条,说明方法编写无错误。
![](http://img.blog.csdn.net/20160506225409435?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
6.最后编写MainActivity.java页面,用于将保存和读取方法和控件绑定。
MainActivity.java页面:
7.另外在Afest.xml页面添加配置信息。
![](http://img.blog.csdn.net/20160507225449107?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
8.运行后可以显示目标效果,可以从环境中看到文件保存目录,还是需要在模拟器环境下查看。
![](http://img.blog.csdn.net/20160506225910911?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
9.按照以前博文介绍的方法,可以导保存到桌面查看文件中的内容,可以发现out.txt文件中是测试时保存的“hello!”,myfile.txt文件中是运行时输入的“123456”。
程序运行,显示一输入框和按钮,在输入框输入内容点击按钮会提示保存成功,关闭程序,再次打开会在输入框显示刚才输入的内容,并提示英文。
1.activity_main.xml页面放置两个控件。
activity_main.xml页面:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <EditText android:id="@+id/etInput" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/btClick" android:layout_centerHorizontal="true" android:layout_marginBottom="34dp" android:ems="10" android:hint="请输入想保存的内容" > <requestFocus /> </EditText> <Button android:id="@+id/btClick" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:onClick="save" android:text="确定" /> </RelativeLayout>
2.新建FileService.java类,编写保存和读取方法。
FileService.java页面:
package com.example.file; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import android.content.Context; public class FileService { private Context context; public FileService(Context context){ this.context=context; } /*创建文件保存内容*/ public void save(String fileName,String content){ BufferedWriter bw=null; try { //打开文件,得到文件输出流(字节流),参数一为文件名,参数二为打开方式,为私有 FileOutputStream fos=context.openFileOutput(fileName,context.MODE_PRIVATE); //OutputStreamWriter把字节流转换成字符流,BufferedWriter创建缓冲区 bw=new BufferedWriter(new OutputStreamWriter(fos)); //往缓冲区写入内容 bw.write(content); } catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); }finally{ try { if(bw!=null){ bw.close(); } } catch (IOException e) { e.printStackTrace(); } } } /*打开文件读取内容*/ public String read(String fileName){ String line; StringBuilder sb=new StringBuilder(); BufferedReader br=null; try { FileInputStream fis=context.openFileInput(fileName); br=new BufferedReader(new InputStreamReader(fis)); while((line=br.readLine())!=null){ sb.append(line); } } catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); }finally{ try { if(br!=null){ br.close(); } } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } }
3.写完保存方法和读取方法,可以先不写MainActivity.java的代码,先写一个fileText.java类进行单元测试,检测保存方法和读取方法是否有错误。
fileText.java页面:
package com.example.text; import com.example.file.FileService; import android.test.AndroidTestCase; import android.util.Log; public class fileText extends AndroidTestCase{ public void saveText(){ FileService fileservice=new FileService(getContext()); fileservice.save("out.txt","hello!"); } public void readText(){ FileService fileservice=new FileService(getContext()); String s=fileservice.read("out.txt"); Log.i("MainActivity","s="+s); } }
4.编写完测试类后,开始测试运行,两个方法的运行方式都一样。
5.测试运行后,如果在左上角出现绿色横条,说明方法编写无错误。
6.最后编写MainActivity.java页面,用于将保存和读取方法和控件绑定。
MainActivity.java页面:
package com.example.file; import android.os.Bundle; import android.app.Activity; import android.view.View; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private EditText etInput; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /*获取控件方法*/ getId(); /*读取文件内容方法*/ read(); } /*读取文件内容方法*/ private void read() { FileService fileservice=new FileService(this); String content=fileservice.read("myfile.txt"); if(!content.isEmpty()){ etInput.setText(content); etInput.setSelection(content.length()); Toast.makeText(this,"Restoring succeeded",Toast.LENGTH_SHORT).show(); } } /*点击按钮调用save方法*/ public void save(View view){ FileService fileservice=new FileService(this); String content=etInput.getText().toString(); fileservice.save("myfile.txt",content); Toast.makeText(this,"保存成功",Toast.LENGTH_SHORT).show(); } /*获取控件方法*/ private void getId() { etInput=(EditText) findViewById(R.id.etInput); } }
7.另外在Afest.xml页面添加配置信息。
8.运行后可以显示目标效果,可以从环境中看到文件保存目录,还是需要在模拟器环境下查看。
9.按照以前博文介绍的方法,可以导保存到桌面查看文件中的内容,可以发现out.txt文件中是测试时保存的“hello!”,myfile.txt文件中是运行时输入的“123456”。
相关文章推荐
- Android05-UI02布局,自定义控件,ListView
- Android获取屏幕宽高及状态栏高度的方法
- Android 客户端与服务器端进行数据交互(二、登录客户端)
- 如何使用Google Map API开发Android地图应用
- Android测试之旅之JUnit(二)
- android:ToolBar详解(手把手教程)
- Android 客户端与服务器端进行数据交互(一、登录服务器端)
- android weight属性
- 第10章 Android的消息机制
- Android中利用Matrix实现图片平移、缩放和旋转
- <Android 应用 之路> 聚合数据SDK
- <Android 应用 之路> 聚合数据SDK
- Android 6.0 运行时权限处理完全解析
- Android 权限大全
- 对android上下文和窗口的理解
- Android中fill_parent、match_parent和wrap_content
- android实现ListView或GridView中item的倒数功能
- android 中传递对象两种方法探索(Serializable,Parcelable)
- Mac编译android内核
- Android 不一样的原生分享