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

Android重温--文件存储

2016-12-17 19:12 253 查看
今天回忆一下Android五种存储方式之”文件存储“。上次的博客中我们回忆了-SharedPreferencesd的存储和读取。因为其是一种轻量级的存储方式,只能存储基本数据类型,无法存储图片等数据。所以我们回想一下“文件存储”,看看它可以实现哪些功能!

一、文件操作

1.注意

(1)如同Linux一样通过路径方式指定文件。

(2)Stream方式访问文件方法仍然适用。

(3)注意文件的访问权限。

2.文件存储和SharedPreferences存储的区别

(1)文件存储,存储的是复杂数据,SharedPreferences只能存储基本数据类型。

(2)文件存储分为内部空间和外部存储空间存储

3.文件存储-使用内部空间存储

(1)使用Internal Storage存储

(2)内部访问权限是私有的

(3)应用卸载后,数据删除。

4.内部存储的使用场景

(1)存储私有的data

(2)存储较小的数据–内部空间有限

(3)保存必须的data–重要数据

5.使用内部存储的基本代码语法和方法调用

(1)写文件–获取outputstream—-

/*contenxt.openFileOutput(String name,int mode);

第一个参数是文件的名字,第二个参数是文件的访问权限

/*返回的实例为FileOutputStream的操作实例

(2)读文件–获取InputStream

/*Context.openFileInput(String name)

参数为存储的文件名称

/*返回的实例为FileInPutStream实例

6.特点

(1)name是文件名,实际的路径位置为/data/data/<–packagename–>/file/<–name–>

(2)如同Java的操作文件方法一样进行读写,注意需要捕获异常,数据读取猴和写入后记得要close()掉!!!!

7.代码的实现demo

package com.zes.base.mydalytext.activity;

import android.app.Activity;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.zes.base.mydalytext.R;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class FileActivity extends Activity implements View.OnClickListener{
private Button save_btn,load_btn;
private EditText content_et,content_btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_file);
Init();
save_btn.setOnClickListener(this);
load_btn.setOnClickListener(this);
}
public void Init(){
save_btn = (Button) findViewById(R.id.save_btn);
load_btn = (Button) findViewById(R.id.load_btn);
content_et = (EditText) findViewById(R.id.content_et);
content_btn2 = (EditText) findViewById(R.id.content_et2);
}

@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.save_btn :
String data = content_et.getText().toString();
if (data==null||data.length()==0){
Toast.makeText(FileActivity.this,"请输入数据",Toast.LENGTH_SHORT).show();
}else{
try {
OutputStream os = openFileOutput("text",0);
String buffer = data;
os.write(buffer.getBytes());
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
break;
case R.id.load_btn :
try {
InputStream is = openFileInput("text");
StringBuffer sb = new StringBuffer();
int c = 0;
while( (c=is.read())!=-1){
sb.append((char)c);
}
content_btn2.setText(sb);
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
break;
default:
break;
}
}
}


XML的布局实现大家就自己实现吧,实现的截图如下:



当输入数据点击保存数据的后进行保存,点击下载数据后数据进行下载:截图如下:



保存下载数据



今天的实现代码有点简单基本就是这个意思,大家要了解文件存储的原理和基本操作语法,但是大家一定要记得当进行数据的写和读的操作结束后关闭该操作流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息