android 文件保存!Sdcard !

来源:互联网 发布:百年战争 知乎 编辑:程序博客网 时间:2024/05/21 09:51

 //将bitmap对象转换为byte[] 数组~

void savePic(Bitmap bm, String fileName) {
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
  saveData(fileName, baos.toByteArray());

 }

//////保存2进制的字节数组

public void saveData(String name, byte[] buf) {
  Log.e("#########", Environment.getExternalStorageState());
  if (Environment.getExternalStorageState().equals(
     Environment.MEDIA_MOUNTED)) {
     Log.e("#########", "保存文件开始");
     File sdCardDir = Environment.getExternalStorageDirectory();// 获取SDCard目录,2.2的时候为:/mnt/sdcart    // 2.1的时候为:/sdcard,所以使用静态方法得到路径会好点。
     File saveFile = new File(sdCardDir, name);
     if (saveFile.exists()) {
         saveFile.delete();
     }else {
     try {
         saveFile.createNewFile();
     } catch (IOException e) {////有些手机会再这里抛异常,虽然已经在user-permission中加入的权限,还是抛Permission denied ,和手机有关,要将USB 数据存储的开关关闭!

     // TODO Auto-generated catch block
     e.printStackTrace();
     }
    }
   FileOutputStream outStream;
   try {
    outStream = new FileOutputStream(saveFile);
    try {
    outStream.write(buf, 0, buf.length);
     outStream.flush();
     outStream.close();

    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }

   } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }

 /**
  * 获取SD卡路径,不建议写死路径
  *
  * @return eg:"/mnt/sdcard"
  */
 public String getSDPath() {
  File sdDir = null;
  boolean sdCardExist = Environment.getExternalStorageState().equals(
    Environment.MEDIA_MOUNTED); // 判断sd卡是否存在
  if (sdCardExist) {
   sdDir = Environment.getExternalStorageDirectory();// 获取跟目录
   return sdDir.toString();
  } else {
   return null;
  }

 }

原创粉丝点击