以下内容给大家介绍Android数据存储提供了五种方式:
1、SharedPreferences
2、文件存储
3、SQLite数据库
4、ContentProvider
5、网络存储
本文主要介绍如何使用文件来存储数据。Android文件操作用到的是Java.IO中的FileOutputStream和FileInputStream类。
一、存储文件
首先实例化一个FileOutputStream。
FileOutputStream foStream = openFileOutput(fileName, MODE_PRIVATE);
// fileName: 要写入文件的名称
// MODE_PRIVATE: 为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
// MODE_APPEND: 模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
// MODE_WORLD_READABLE: 表示当前文件可以被其他应用读取,不推荐使用
// MODE_WORLD_WRITEABLE: 表示当前文件可以被其他应用写入,不推荐使用
然后调用foStream.write()即可完成写入。
byte[] buffer = fileContent.getBytes();
foStream.write(buffer);
Toast.makeText(MainActivity.this, "写入成功",Toast.LENGTH_SHORT).show();
最后进行一些清理工作,刷新写出流和关闭流。
foStream.flush();
foStream.close();
二、读取文件
同样的,首先实例化一个FileInputStream。
FileInputStream fiStream = openFileInput(fileName)
然后调用fiStream.read()即可
int len = fiStream.available();
byte[] buffer = new byte[len];
fiStream.read(buffer)
最后,将文本显示并关闭读文件流
etContent.setText(new String(buffer));
Toast.makeText(MainActivity.this, "读取成功",Toast.LENGTH_SHORT).show();
fiStream.close();
三、完整代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
import android.support.v.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class MainActivity extends AppCompatActivity {
private EditText etName;
private EditText etContent;
private Button btnWrite;
private Button btnRead;
private String fileName = "" ;
private String fileContent = "" ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etName = (EditText)findViewById(R.id.etName);
etContent = (EditText)findViewById(R.id.etContent);
btnWrite = (Button)findViewById(R.id.btnWrite);
btnRead = (Button)findViewById(R.id.btnRead);
btnWrite.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View view) {
fileName = etName.getText().toString();
fileContent = etContent.getText().toString();
try {
FileOutputStream foStream = openFileOutput(fileName, MODE_PRIVATE);
byte [] buffer = fileContent.getBytes();
foStream.write(buffer);
Toast.makeText(MainActivity. this , "写入成功" ,Toast.LENGTH_SHORT).show();
foStream.flush();
foStream.close();
} catch (Exception e){
e.printStackTrace();
}
}
});
btnRead.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View view) {
fileName = etName.getText().toString();
try {
FileInputStream fiStream = openFileInput(fileName);
int len = fiStream.available();
byte [] buffer = new byte [len];
fiStream.read(buffer);
etContent.setText( new String(buffer));
Toast.makeText(MainActivity. this , "读取成功" ,Toast.LENGTH_SHORT).show();
fiStream.close();
} catch (Exception e){
e.printStackTrace();
}
}
});
}
}
<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" android:paddingLeft= "@dimen/activity_horizontal_margin"
android:paddingRight= "@dimen/activity_horizontal_margin"
android:paddingTop= "@dimen/activity_vertical_margin"
android:paddingBottom= "@dimen/activity_vertical_margin" tools:context= ".MainActivity" >
<EditText
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:id= "@+id/etName"
android:layout_alignParentTop= "true"
android:layout_alignParentLeft= "true"
android:layout_alignParentStart= "true"
android:layout_alignParentRight= "true"
android:layout_alignParentEnd= "true"
android:text= "文件名" />
<EditText
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:id= "@+id/etContent"
android:layout_below= "@+id/etName"
android:layout_alignParentLeft= "true"
android:layout_alignParentStart= "true"
android:layout_alignParentRight= "true"
android:layout_alignParentEnd= "true"
android:text= "文件内容" />
<Button
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:text= "保存"
android:id= "@+id/btnWrite"
android:layout_alignTop= "@+id/btnRead"
android:layout_toLeftOf= "@+id/btnRead"
android:layout_toStartOf= "@+id/btnRead" />
<Button
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:text= "读取"
android:id= "@+id/btnRead"
android:layout_below= "@+id/etContent"
android:layout_alignParentRight= "true"
android:layout_alignParentEnd= "true" />
</RelativeLayout>
|