1、将数据存储到文件中
private void save() {
String data = "Data to save";
FileOutputStream out = null;
BufferedWriter writer = null;
try {
out = openFileOutput("data", Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
if (out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Context中提供了一个OpenFileOutput()方法,可以将数据存储到指定的文件。第一个参数是文件名,可以不包含路径,因为文件默认存储到/data/data//files/目录下面的。第二个参数是操作模式,主要有两种MODE_PRIVATE和MODE_APPEND两种模式。前者是默认操作模式,表示指定同样文件名的时候,所写入的内容将会覆盖原有文件中的内容。后者给指定文件追加内容。在这里,openFileOut()方法能够得到一个FileOutputStream对象,然后借助他构建出一个OutputStreamWriter对象,接着再用OutputStreamWriter构建出一个BufferedWriter对象
2、从文件中读取数据
private StringBuilder load(){
FileInputStream in=null;
BufferedReader reader=null;
StringBuilder content=new StringBuilder();
try {
in =openFileInput("data");
reader=new BufferedReader(new InputStreamReader(in));
String line="";
while((line=reader.readLine())!=null){
content.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try{
if(reader!=null){
reader.close();
}
if(in!=null){
in.close();
}
}catch (IOException e){
e.printStackTrace();
}
}
return content;
}
3、向sd中存储数据
private void writeSDcard(String str) {
try {
// 判断是否存在SD卡
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
// 获取SD卡的目录
File sdDire = Environment.getExternalStorageDirectory();
FileOutputStream outFileStream = new FileOutputStream(
sdDire.getCanonicalPath() + "/test.txt");
outFileStream.write(str.getBytes());
outFileStream.close();
Toast.makeText(this, "数据保存到text.txt文件了", Toast.LENGTH_LONG)
.show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
4、从sd中读取数据
// 从SD卡中读取数据
private void readSDcard() {
StringBuffer strsBuffer = new StringBuffer();
try {
// 判断是否存在SD
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File file = new File(Environment.getExternalStorageDirectory()
.getCanonicalPath() + "/test.txt");
// 判断是否存在该文件
if (file.exists()) {
// 打开文件输入流
FileInputStream fileR = new FileInputStream(file);
BufferedReader reads = new BufferedReader(
new InputStreamReader(fileR));
String st = null;
while ((st = reads.readLine()) != null) {
strsBuffer.append(st);
}
fileR.close();
} else {
Toast.makeText(this, "该目录下文件不存在", Toast.LENGTH_LONG).show();
}
}
}
}
记得在Androidstudio的Androidmanifest.xml配置文件注册访问手机sd卡的权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />