一、判定是否储存在SDcard
1.通常情况下访问手机的硬件设备都是用Environment来进行访问
2.特别需要注意的是访问SDcard需要设置两个权限
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
否则无法访问SDcard
public static boolean isSDcard(){ //判断SDcard是否存在
return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
}
二、获取SDcard的目录,并创建名为Image/images的目录
public static File getExternaFile(){
if(!isSDcard()){
return null;
}else{
File file = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(), "cbkcache/images");
if(!file.exists()){
file.mkdirs();
System.out.println("file.getAbsolutePath()==="+file.getAbsolutePath());
}
return file;
}
}
三、在刚刚创建目录下创建一个文件(文件名和文件格式由传过来的参数决定),并将数据写到这个文件上
这里的参数第一个指的是 图片名.文件图片格式
第二个参数是 下载获得的图片byte[]数据
public static void writeToSDcard(String fileName , byte[] b){
File m = getExternaFile();
File file = new File(m, fileName);//在SDcard上创建目录为getExternaFile(),名字为fileName文件
System.out.println(getExternaFile()+"====");
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(b);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
四、程序中获取SDcard上的图片的方法
同样需要传一个文件名.图片格式的参数进去
public static Bitmap getMapFromSDcard(String FileName ){
File file = new File(getExternaFile(),FileName);
System.out.println(file.getAbsolutePath()+"++++++++++");
if(file.exists()){
return BitmapFactory.decodeFile(file.getAbsolutePath());
}
return null;
}