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

Android数据存储:(外存储)基础

2016-08-16 21:54 218 查看
1.保存文件到SD卡

2、从SD卡读取文件

3、删除SD卡文件

 

程序代码:

package com.example.administrator.jreduch08;

import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class SaveToSdCardActivity extends AppCompatActivity {
private Button save, read, delete;
private EditText content;
private TextView show;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_inner_io);
save = (Button) findViewById(R.id.save);
read = (Button) findViewById(R.id.read);
delete = (Button) findViewById(R.id.delete);
content = (EditText) findViewById(R.id.content);
show = (TextView) findViewById(R.id.show);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveFile();
}
});
read.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
show.setText(readFile());
}
});
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
removeFile();
}
});

}

//保存文件到SD卡
public void saveFile() {
FileOutputStream fos = null;
//获取SD卡状态
String state = Environment.getExternalStorageState();
//判断SD卡是否就绪
if (!state.equals(Environment.MEDIA_MOUNTED)) {
Toast.makeText(getBaseContext(), "请检查SD卡", Toast.LENGTH_SHORT).show();
return;
}
//取得SD卡根目录
File file = Environment.getExternalStorageDirectory();
try {

Log.d("====SD卡根目录:", "" + file.getCanonicalPath().toString());
//输出流的构造参数1:可以是File对象,也可以是文件路径
//输出流的构造参数2:默认为false=》覆盖内容,true=》追加内容
// File myFile=new File(file.getCanonicalPath()+"/sd.txt");//获得规范路径
fos = new FileOutputStream(file.getCanonicalPath() + "/sd.txt", true);
String str = content.getText().toString();
fos.write(str.getBytes());
Toast.makeText(getBaseContext(), "保存成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

//从SD卡读取文件
public String readFile() {
BufferedReader reader = null;
FileInputStream fis = null;
StringBuilder sbd = new StringBuilder();//单线程,不安全,效率高
String statu = Environment.getExternalStorageState();
if (!statu.equals(Environment.MEDIA_MOUNTED)) {
Toast.makeText(getBaseContext(), "SD卡未就绪", Toast.LENGTH_SHORT).show();
return "";
}
File root = Environment.getExternalStorageDirectory();
try {
fis = new FileInputStream(root + "/sd.txt");
reader = new BufferedReader(new InputStreamReader(fis));
String row = "";
while ((row = reader.readLine()) != null) {
sbd.append(row);
}
} catch (FileNotFoundException e) {
// e.printStackTrace();
Toast.makeText(getBaseContext(), "文件不存在", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
reader.close();

b6fc
} catch (IOException e) {
e.printStackTrace();
}
}
}
return sbd.toString();
}

//删除SD卡文件
public void removeFile() {
//获取SD卡状态
String state = Environment.getExternalStorageState();
//判断SD卡是否就绪
if (!state.equals(Environment.MEDIA_MOUNTED)) {
Toast.makeText(getBaseContext(), "SD卡未就绪", Toast.LENGTH_SHORT).show();
return;
}
File root = Environment.getExternalStorageDirectory();
File myFile=new File(root,"sd.txt");
if(myFile.exists()){//文件和目录是否存在
myFile.delete();
Toast.makeText(getBaseContext(),"文件已删除",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getBaseContext(),"文件不存在",Toast.LENGTH_SHORT).show();
}
}
}

 

 

 

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