Android写bitmap对象到文件中

关于Android file.createNewFile() 方法出现的问题总结

http://my.oschina.net/AlexZhuang/blog/55764

 

今天在编写向SDcard中,创建文件夹并向其中保存文件的过程中出现个一系列的问题 在此做下总结:

1.首先要注意权限问题

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

01String local_file = Environment.getExternalStorageDirectory().getAbsolutePath()+"/down/";
02  
03File f = new File(local_file);
04  
05if(!f.exists()){
06  
07f.mkdirs();
08  
09}
10  
11String local_file = f.getAbsolutePath()+"/"+filename;
12  
13File f = new File(local_file);
14  
15try {
16  
17   if(!file.createNewFile()) {
18  
19       System.out.println("File already exists");
20  
21   
22  
23} catch (IOException ex) {
24  
25   System.out.println(ex);
26  
27}

2.file.createNewFile() 方法出现的问题

会出现No such file ..的问题

需要注意的是:要先对设计的文件路径创建文件夹 , 然后在对文件进行创建

 

 

 

 

@Override
 public void onClick(View v) {
  // TODO Auto-generated method stub
  File f = new File(path);
  f.exists();
  if (v.getId() == R.id.btn) {
   
   try {
    fd = ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
   
    bm = BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor(),null, null);
        
    File temp = new File("/mnt/sdcard/mtk/lock.png");
    
    if (!temp.exists()) {
     try {
      temp.createNewFile();
     } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
    outputStream = new FileOutputStream("/mnt/sdcard/mtk/lock.png");
    
    if (outputStream != null) {
     dumpBitmap(bm, outputStream);
             }
    
   } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  
  if (v.getId() == R.id.btn02) {
   try {
    fd = ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
   
    bm = BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor(),null, null);
        
    File temp = new File("/mnt/sdcard/mtk/wall.png");
    
    if (!temp.exists()) {
     try {
      temp.createNewFile();
     } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
    
    outputStream = new FileOutputStream("/mnt/sdcard/mtk/wall.png");
    
    if (outputStream != null) {
     dumpBitmap(bm, outputStream);
             }
    
   } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }
   
 private void dumpBitmap(Bitmap bm, OutputStream outputStream2) {
  // TODO Auto-generated method stub
  bm.compress(Bitmap.CompressFormat.PNG, 100, outputStream2);
 }

 private static void dumpBitmap(Bitmap b) {
     if (b != null) {
         java.io.FileOutputStream fos = null;
         try {
             String filename = android.os.Environment.getExternalStorageDirectory().toString()+"/DCIM/Bitmap["+
                      android.os.SystemClock.uptimeMillis() + "].png";
             fos = new java.io.FileOutputStream(filename);
             b.compress(Bitmap.CompressFormat.PNG, 100, fos);
         } catch (java.io.IOException ex) {
             // MINI_THUMBNAIL not exists, ignore the exception and generate one.
         } finally {
             if (fos != null) {
             try {
                 fos.close();
             } catch (java.io.IOException ex) {
             }
             }
         }
     }
 }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值