首页 > 代码库 > Android开发系列(七):把文件存放在SDCard中

Android开发系列(七):把文件存放在SDCard中

一般我们的手机应用默认的存储空间是手机自带的内存中,但是对于比较大的文件比如视频、音频来说,我们可以把它存放在SDCard中:

接下来通过代码实现具体的把文件存放在SDCard中(仅实现了核心代码)


首先,因为要存放在SDCard中,我们需要提供SDCard权限:

在AndroidManifest.xml中添加权限:

<!-- 在SDCard创建与删除文件权限 -->
	<uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
	<!-- 往SDCard写入数据权限 -->
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


然后,在FileService.java中添加一个方法:

public void saveToSDCard(String filename,String content) throws Exception{
		//Environment.getExternalStorageDirectory()函数是为了取得SDCard的路径
		File file = new File(Environment.getExternalStorageDirectory() ,filename);
		//打开输出流
		FileOutputStream outStream = new FileOutputStream(file);
		//写入内容
		outStream.write(content.getBytes());
		outStream.close();
	}
重点是:Environment.getExternalStorageDirectory()函数


最后,我们直接在点击“保存”按钮之后,调用按钮的onClick()方法,在这个方法中添加:

//new一个FileService对象,getApplicationContext()返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁
FileService service = new FileService(getApplicationContext()); 
try {
        //判断SDCard是否存在,并且可以读写,
	//Environment.getExternalStorageState()获得当前状态:
	//Environment.MEDIA_MOUNTED表示的是SDCard的状态:存在SDCard
	if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
		service.saveToSDCard(filename, content); //调用save()方法保存文件
		Toast.makeText(getApplicationContext(), R.string.success, 1).show(); //调用一个Toast呈现一个“保存完成”的消息
	}else{
		Toast.makeText(getApplicationContext(), R.string.sdcarderror, 1).show(); //调用一个Toast呈现一个“SDCard不存在或者写保护”的消息
	}
} catch (Exception e) {
	Toast.makeText(getApplicationContext(), R.string.fail, 1).show(); //调用Toast对象呈现一个“保存失败”的消息
	e.printStackTrace();
}





Android开发系列(七):把文件存放在SDCard中