2、获得SD卡目录
1
|
File sdCardDir = (); //获取SDCard目录
|
3、写入文件
01
|
File f = (); //获取SD卡目录
|
02
|
File fileDir = new File(f, "" );
|
03
|
FileOutputStream os = new FileOutputStream(fileDir);
|
04
|
try {
|
05
|
(());
|
06
|
();
|
07
|
showToast( "保存到SD卡中" );
|
08
|
} catch (IOException e) {
|
09
|
// TODO Auto-generated catch block
|
10
|
();
|
11
|
}
|
4、读取文件
01
|
File f = (); //获取SD卡目录
|
02
|
File fileDir = new File(f, "" );
|
03
|
is = new FileInputStream(fileDir);
|
04
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
05
|
byte [] array = new byte [ 1024 ];
|
06
|
int len = - 1 ;
|
07
|
while ( (len = (array)) != - 1 ){
|
08
|
(array, 0 ,len);
|
09
|
}
|
10
|
();
|
11
|
();
|
12
|
return ();
|
5、读取权限
在中加入访问SDCard的权限如下:
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name=".MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name=".WRITE_EXTERNAL_STORAGE"/>
要往SDCard存放文件,程序必须先判断手机是否装有SDCard,并且可以进行读写。
6、其它方法
getCacheDir()方法用于获取/data/data/<package name>/cache目录。
getFilesDir()方法用于获取/data/data/<package name>/files目录。
其实就是普通的文件操作,不过还是有些地方需要注意。比如:
1.加入sdcard操作权限;
2.确认sdcard的存在;
3.不能直接在非sdcard的根目录创建文件,而是需要先创建目录,再创建文件;
在添加sdcard操作权限
<!-- sdcard权限 -->
<uses-permission android:name=".WRITE_EXTERNAL_STORAGE">
</uses-permission>
变量声明:
private final static String PATH = "/sdcard/digu";
private final static String FILENAME = "/";
向sdcard写文件
/**
* 写文件
*/
private void onWrite() {
try {
(LOG_TAG, "Start Write");
//1.判断是否存在sdcard
if (Environment.MEDIA_MOUNTED.equals(())) {
//目录
File path = new File(PATH);
//文件
File f = new File(PATH + FILENAME);
if(!()){
//2.创建目录,可以在应用启动的时候创建
();
}
if (!()) {
//3.创建文件
();
}
OutputStreamWriter osw = new OutputStreamWriter(
new FileOutputStream(f));
//4.写文件,从EditView获得文本值
(().toString());
();
}
} catch (Exception e) {
(LOG_TAG, "file create error");
}
}
接着我们在使用SDcard进行读写的时候 会用到Environment类下面的几个静态方法
1: getDataDirectory() 获取到Androi中的data数据目录
2:getDownloadCacheDirectory() 获取到下载的缓存目录
3:getExternalStorageDirectory() 获取到外部存储的目录 一般指SDcard
4:getExternalStorageState() 获取外部设置的当前状态 一般指SDcard,
android系统中对于外部设置的状态,我们比较常用的应该是 MEDIA_MOUNTED(SDcard存在并且可以进行读写) MEDIA_MOUNTED_READ_ONLY (SDcard存在,只可以进行读操作) 当然还有其他的一些状态,可以在文档中进行查找到
5:getRootDirectory() 获取到Android Root路径
6:isExternalStorageEmulated() 返回Boolean值判断外部设置是否有效
7:isExternalStorageRemovable() 返回Boolean值,判断外部设置是否可以移除
【注】上面进行红色标记的方法,我们会常用
下面看实现SDCard进行文件读写操作的Demo:
import java.;
import ;
import ;
import android.;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
public class SDcardActivity extends Activity {
private Button bt1, bt2;
private EditText et1, et2;
private static final String FILENAME = "temp_file.txt";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView();
bt1 = (Button) this.findViewById(.bt1);
bt2 = (Button) this.findViewById(.bt2);
et1 = (EditText) this.findViewById(.et1);
et2 = (EditText) this.findViewById(.et2);
( new MySetOnClickListener());
( new MySetOnClickListener());
}
private class MySetOnClickListener implements OnClickListener {
@Override
public void onClick(View v) {
File file = new File((),
FILENAME);
switch (()) {
case .bt1: // 使用SDcard写操作
if (().equals(
Environment.MEDIA_MOUNTED)) {
try {
FileOutputStream fos = new FileOutputStream(file);
(().toString().getBytes());
();
(SDcardActivity. this, "写入文件成功",
Toast.LENGTH_LONG).show();
} catch (Exception e) {
(SDcardActivity. this, "写入文件失败",
Toast.LENGTH_SHORT).show();
}