一,写入数据到SD卡的一个文件
1.判断是不是安卓机是不是有sd卡存储 是boolean类型
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
/* getExternalStorageState源码解释:Returns the current state of the primary "external" storage device.
*/
2. .Environment.getExternalStorageDirectory(); 获取sd卡目录
3. getAbsolutePath 找到绝对路径下的文件,可以将数据写入到这个文件
4. RandomAccessFile输出内容到sd卡目录下指定的文件中所需要的对象raf,具有读写权限
5. seek() 这个方法是查询文件的长度,方便下一次的读写,将数据追加到后面,
没有将会逐个覆盖数据
6. 还可以outputstream流写入数据
FileOutputStream out=new FileOutputStream(sdDir+FILE_NAME);
PrintStream ps = new PrintStream(out);
ps.write(content.getBytes());
ps.close();
out.close();
二:从SD卡的文件读取数据:
1.判断是不是安卓机是不是有sd卡存储 是boolean类型
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
/* getExternalStorageState源码解释:Returns the current state of the primary "external" storage device.
*/
2. 获取SD卡目录
File sdDir=Environment.getExternalStorageDirectory();
获取写入的文件
String targetDir=sdDir.getAbsolutePath()+FILE_NAME;
3.读数据使用 FileInputStream
三 找到文件
四 : 主要代码
package com.briup.androiddatasave;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import com.briup.utils.ToastUtil;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends Activity {
private EditText mEt_readData,mEt_writeData;
final String FILE_NAME="/gress.txt";
/**写入数据
* @param v
*/
public void write(View v){
String content=mEt_writeData.getText().toString();
//判断当前系统是否有SD卡,并且应用程序具有读取sd卡的权限
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//获取SD卡目录
File sdDir=Environment.getExternalStorageDirectory();
//获取写入的文件
File targetFile=new File(sdDir.getAbsolutePath()+FILE_NAME);
// String targetFile=sdDir.getAbsolutePath()+FILE_NAME;
try {
//输出内容到sd卡目录下指定的文件中所需要的对象raf,具有读写权限
//FileOutputStream fos=new FileOutputStream(sdDir+FILE_NAME);
RandomAccessFile raf=new RandomAccessFile(targetFile,"rw");
//查询文件的长度,方便下一次的读写,将数据追加到后面,没有将会逐个覆盖数据
raf.seek(targetFile.length());
//开始向文件中写入内容
raf.write(content.getBytes());
//关闭流
raf.close();
ToastUtil.showToast(this,"写入成功");
} catch (Exception e) {
e.printStackTrace();
ToastUtil.showToast(this,"写入失败");
}
}else{
ToastUtil.showToast(this,"SD卡不存在");
}
mEt_writeData.setText("");
}
/** 读取数据
* getExternalStorageState源码解释:Returns the current state of the primary "external" storage device.
* @param v
*/
public void read(View v){
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//获取SD卡目录
File sdDir=Environment.getExternalStorageDirectory();
//获取写入的文件
String targetDir=sdDir.getAbsolutePath()+FILE_NAME;
try {
FileInputStream fis=new FileInputStream(targetDir);
BufferedReader buff=new BufferedReader(new InputStreamReader(fis));
String line=null;
StringBuffer sb=new StringBuffer();
while((line=buff.readLine())!=null){
sb.append(line);
}
buff.close();
mEt_readData.setText(sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
}else{
ToastUtil.showToast(this,"SD卡不存在");
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEt_readData=(EditText) findViewById(R.id.main_et_readdata);
mEt_writeData=(EditText) findViewById(R.id.main_et_writedata);
}
}