6.1 数据存储与访问之

Android基础入门教程——6.1 数据存储与访问之——文件存储读写

标签(空格分隔): Android基础入门教程

本节引言:

嘿嘿,看到这个题目,相信部分读者会问,你前面的Fragment写完了吗?嗯,没写完,因为想例子,需要 一点时间,为了提高效率,所以决定像多线程一样,并发的来写教程,这样可能可以加快写教程的进度, 到现在为止,刚好写了60篇,离完成入门教程还很远呢,而前面也说过,想在一个半到两个月之内完成 这套教程,今天已经9.1号了,要加吧劲~好的,废话就这么多,本节给大家介绍的是Android数据存储与 访问方式中的一个——文件存储与读写,当然除了这种方式外,我们可以存到SharedPreference,数据库, 或者Application中,当然这些后面都会讲,嗯,开始本节内容~

1.Android文件的操作模式

学过Java的同学都知道,我们新建文件,然后就可以写入数据了,但是Android却不一样,因为Android是 基于Linux的,我们在读写文件的时候,还需加上文件的操作模式,Android中的操作模式如下:

2.文件的相关操作方法

3.文件读写的实现

Android中的文件读写和Java中的文件I/O相同,流程也很简单,下面我们来写个简单的示例:

实现效果图:

PS:这里用的是模拟器,因为笔者的N5并没有root,看不到文件的存储目录,下面我们打开DDMS 的File Exploer可以看到,在data/data/<包名>/file中有我们写入的文件:

我们可以点击右上角的响应图标将文件导入到电脑中,并且打开验证写入的内容:

代码实现:

首先是布局文件:main_activity.xml

===”vertical”tools:context=”com.jay.example.filedemo1.MainActivity”><TextView=”@string/nametitle” /><EditText=”wrap_content” /><TextView=”@string/detailtitle” /><EditText=”wrap_content”android:minLines=”2″ /><LinearLayout=”horizontal”><Button=”wrap_content”android:text=”@string/btnwrite” /><Button=><Button=>

然后我们来写一个文件协助类:FileHelper.java

/** * Created by Jay on 2015/9/1 0001. */{private Context mContext;public FileHelper() {}public FileHelper(Context mContext) {super();this.mContext = mContext;}/** 这里定义的是一个文件保存的方法,写入到文件中,所以是输出流* */(String filename, String filecontent) throws Exception {//这里我们使用私有模式,创建出来的文件只能被本应用访问,还会覆盖原文件哦FileOutputStream output = mContext.openFileOutput(filename, Context.MODE_PRIVATE);output.write(filecontent.getBytes()); //将String字符串以字节流的形式写入到输出流中output.close();//关闭输出流}/** 这里定义的是文件读取的方法* */public String read(String filename) throws IOException {//打开文件输入流FileInputStream input = mContext.openFileInput(filename);byte[] temp = new byte[1024];StringBuilder sb = new StringBuilder(“”);int len = 0;//读取文件内容:while ((len = input.read(temp)) > 0) {sb.append(new String(temp, 0, len));}//关闭输入流input.close();return sb.toString();}}

最后是MainActivity.java,我们在这里完成相关操作:

.OnClickListener {private EditText editname;private EditText editdetail;private Button btnsave;private Button btnclean;private Button btnread;private Context mContext;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mContext = getApplicationContext();bindViews();}() {editdetail = (EditText) findViewById(R.id.editdetail);editname = (EditText) findViewById(R.id.editname);btnclean = (Button) findViewById(R.id.btnclean);btnsave = (Button) findViewById(R.id.btnsave);btnread = (Button) findViewById(R.id.btnread);btnclean.setOnClickListener(this);btnsave.setOnClickListener(this);btnread.setOnClickListener(this);}(View v) {switch (v.getId()) {case R.id.btnclean:editdetail.setText(“”);editname.setText(“”);break;case R.id.btnsave:FileHelper fHelper = new FileHelper(mContext);String filename = editname.getText().toString();String filedetail = editdetail.getText().toString();try {fHelper.save(filename, filedetail);Toast.makeText(getApplicationContext(), “数据写入成功”, Toast.LENGTH_SHORT).show();} catch (Exception e) {e.printStackTrace();Toast.makeText(getApplicationContext(), “数据写入失败”, Toast.LENGTH_SHORT).show();}break;case R.id.btnread:String detail = “”;FileHelper fHelper2 = new FileHelper(getApplicationContext());try {String fname = editname.getText().toString();detail = fHelper2.read(fname);} catch (IOException e) {e.printStackTrace();}Toast.makeText(getApplicationContext(), detail, Toast.LENGTH_SHORT).show();break;}}}4.读取SD卡上的文件

读取流程图:

代码示例:

运行效果图:

同样打开DDMS的File Explorer,在旧版本的系统上我们可以直接在mmt\sdcard上找到,但是新版本 的就可能需要我们自己找找了,首先我们来到这个路径下:

点开sdcard,但是没东西,,我们继续找唠叨后面这个/storage/emulated/legacy下找:

好吧,他又跳到别的地方去了,我们继续找/storage/shell/emilated/0

果然找到了,我们在SD卡里生成的test.txt!导出到电脑看下里面的内容:

嘿嘿,果然读写SD卡成功~接下来我们来看下代码是怎么写的:

代码实现:

只有流过血的手指才能弹出世间的绝唱。

6.1 数据存储与访问之

相关文章:

你感兴趣的文章:

标签云: