向SDCard中写入并读取图像文件

/**
*
* @方法名:readPicFromSdcard
* @描述:从sdcar中读取文件
* @param folderName 文件夹名
* @param fileName 文件名
* @输出:void
* @作者:admin
*
*/
private void readPicFromSdcard(String folderName, String fileName) {
Bitmap bmp = null;
// 1.判断sdcard是否存在
if(isSDcardExists()) {
// 2.获取sdcard的根目录
File sdCardDir = Environment.getExternalStorageDirectory();
// 3.获取文件所在的文件夹的目录
File filedir = new File(sdCardDir, folderName);
// 4.判断目录是否存在,如果不存在。则重新创建
if(!filedir.exists()) {
filedir.mkdirs();
}

// 5.创建文件的引用
File imagefile = new File(filedir, fileName + ".jpg");

try {
// 6.判断文件资源是否存在,
if(imagefile.exists()) {
// 如果文件存在则读取文件资源,并进行显示,
readPicResource(imagefile, bmp);
}
else {
// 如果不存在则先把要读入的文件写入sdcard中,当写入成功,再显示
storeImageToSDCARD(bmp, imagefile);

}

}
catch(Exception e) {
e.printStackTrace();
}

}
}

/**
*
* @方法名:readPicResource
* @描述:读文件操作
* @param pic
* @param bmp
* @输出:void
* @作者:admin
*
*/
private void readPicResource(File pic, Bitmap bmp) {
FileInputStream fis = null;
try {
fis = new FileInputStream(pic);
// bmp = BitmapFactory.decodeFile(pic.getAbsolutePath());
bmp = BitmapFactory.decodeStream(fis);
// 通过输入流构建Bitmap
iv.setImageBitmap(bmp);
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
finally {
if(fis != null)
try {
fis.close();
}
catch(IOException e) {
e.printStackTrace();
}
}

}
/**
*
*
* @方法名:storeImageToSDCARD
* @描述:写文件操作
* @param bmp
* @param imagefile
* @输出:void
* @作者:admin
*
*/
private void storeImageToSDCARD(Bitmap bmp, File imagefile) {
Resources res = getResources();
bmp = BitmapFactory.decodeResource(res, R.drawable.lzy);
if(!imagefile.exists()) {
try {
imagefile.createNewFile();
FileOutputStream fos = new FileOutputStream(imagefile);
bmp.compress(Bitmap.CompressFormat.PNG, 100, fos);

fos.flush();
fos.close();

readPicResource(imagefile, bmp);
}
catch(Exception e) {
e.printStackTrace();
}
}
else {
iv.setImageBitmap(bmp);
}

}
/**
*
* @方法名:isSDcardExists
* @描述:判断sdcard是否存在
* @return
* @输出:boolean
* @作者:admin
*
*/
private boolean isSDcardExists() {
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
return true;
}
return false;
}

posted @ 2014-09-23 15:56  feiyue528  阅读(210)  评论(0编辑  收藏  举报