您的位置:首页 > 其它

数据存储--文件存储

2016-03-27 10:40 411 查看

文件存储

文件存储是android中最简单的数据存储手段,,其中所用到的核心技术就是Content类中提供的openFileOutput和openFileInput方法,之后就是使用java中各种输入输出流来进行读写操作

这种方式存储的数据/data/data/<包名>/files目录下

openFileOutput(参数1,参数2)

参数1为你要存储数据的文件名称

参数2为存储的模式,有两种MODE_PRIVATE覆盖存储,每次都重写文件,删除之前的内容,MODE_APPEND追加存储,表示在文件中继续填写内容

具体实现代码如下:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

private EditText editText;
private Button button;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
button.setOnClickListener(this);
//load为读取数据的方法
String str=load();
//TextUtils是一个工具类,既可以判断null,也可以同时判断""两种形式的空值
if (!TextUtils.isEmpty(str)){
editText.setText(str);
editText.setSelection(str.length());
Toast.makeText(MainActivity.this, "恢复文本成功", Toast.LENGTH_SHORT).show();
}
}

private String load() {
BufferedReader br=null;
StringBuffer content = new StringBuffer();
try {
//通过java中的输入流来进行数据的读取,参数即位文件名称
br=new BufferedReader(new InputStreamReader(openFileInput("mydata")));
String line=null;
while((line=br.readLine())!=null){
content.append(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
//最后记得关闭流
if (br!=null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return content.toString();
}

private void init() {
editText= (EditText) findViewById(R.id.editText);
button= (Button) findViewById(R.id.button);
}

//通过点击事件进行数据的存储
public void onClick(View v) {
switch (v.getId()){
case R.id.button:
saveText();
Toast.makeText(MainActivity.this, "保存完毕", Toast.LENGTH_SHORT).show();
break;
}
}

private void saveText() {
String text=editText.getText().toString();
BufferedWriter out = null;
try {
//通过输出流来进行数据的存储
out=new BufferedWriter(new OutputStreamWriter(openFileOutput("mydata",MODE_PRIVATE)));
out.write(text);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
//最后关闭输出流
if (out!=null){
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}


效果图如图所示

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: