Android中SD Card数据存取与前面所说的Android中文件的储存与访问很类似。
1.首先完成save方法
public void saveSDCard(String filename,String content)throws Exception {
FileOutputStream outStream=context.openFileOutput(filename,Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);//可读写的操作模式
outStream.write(content.getBytes());
outStream.close();
}
FileService.java代码如下:
public class FileService{
private Context context;
public FIleService(Context context){
this.context=context;
}
//保存内容
public void saveTOSDCard(String content)throws Exception{
File file = new FIle(Environment.getExternalStorageDirectory()."SDCard.txt");//第一个参数是文件存放的文件夹路径,此方法用于获取SD Card的目录。
FileOutputStream outStream = new FileOutputStream(file);
outStream.write(content.getBytes());
outStream.close();
}
}
注:获取SD Card的目录,换种方式可以是:
File sdCardDir = new File("/sdcard");//获取SD Card目录 File saveFile = new file(sdCardDir,"SDCard.txt");
两句可以合并为一句:
File saveFile = new File("/sdcard/ SDCard.txt");
2.FileServicetest.java测试类代码如下:
public class FileServiceTest extends AndroidTestCase{
private static final String TAG = "FileServiceTset";
public void testSaveToSDCard() throws Throwable{
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//判断SD Card是否可用,Environment.getExternalStorageState()获取外存储设备的状态
//该状态代表SD Card已经安装在手机上,并且可以进行读写访问
FileService fileService = new FileService(getContext());
fileService.saveToSDCard("明天会更好!");
}else{
Log.i(TAG,"sdcard不存在或写保护了");
}
}
}
3.执行测试,配置测试环境:
在AndroidManifest.xml文件中的<application/>中添加
<uses-library android:name="android.test.runner"/>
在<applicaton/>外添加
<instrumentation android:name="android.test.InstrumrntationTestRunner"
android:targetPackage="com.sharpandroid.sdcard" android:label="Tsts for My App"/>
4.访问SD Card
若在此结束,执行testSave方法程序会报错。这是因为SD Card是需要添加访问权限的,对该程序而言SD Card为不存在。
在AndroidManifest.xml添加访问SD Card 权限的代码如下:
<!--在SDCard中创建与删除文件权限-->
<users-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!--往SDCard写入数据权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
再次执行。