File.delete()不会完全删除留下的图像空白图像文件

在我的应用程序,你需要一个图片保存到SD卡,然后用户select如何处理它。 删除,保存或发送。 如果你按删除。 我调用File.delete()删除文件,当我去画廊看,然后当我有时回来后,我看到一个黑色的图像,说文件无法加载。 那个图像是我以前试图删除的图像。 这有什么问题,为什么不完全消失?

我如何保存图像:

 public static File getOutputMediaFile(byte[] data){ image= BitmapFactory.decodeByteArray(data, 0, data.length); File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "FrontFlash"); // Create the storage directory if it does not exist if (!mediaStorageDir.exists()){ if (!mediaStorageDir.mkdirs()) return null; } // Create a media file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); File mediaFile; mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg"); return mediaFile; } @Override public void onPictureTaken(byte[] data, Camera camera){ pictureFile = Util.getOutputMediaFile(data); if (pictureFile == null){ Toast.makeText(this, "Couldn't create file", Toast.LENGTH_SHORT).show(); } else{ try{ FileOutputStream fos = new FileOutputStream(pictureFile); fos.write(data); fos.close(); } catch (FileNotFoundException e){ Toast.makeText(this, "File not found exception", Toast.LENGTH_SHORT).show(); } catch (IOException e){ Toast.makeText(this, "IO Exception", Toast.LENGTH_SHORT).show(); } } sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "FrontCam")))); String photopath = pictureFile.getPath().toString(); 

//旋转图像

 bmp = BitmapFactory.decodeFile(photopath); matrix = new Matrix(); matrix.postRotate(270); bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true); FileOutputStream fOut; try { fOut = new FileOutputStream(pictureFile); bmp.compress(Bitmap.CompressFormat.JPEG, 85, fOut); fOut.flush(); fOut.close(); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

在哪里onClick图像被删除

 public void exit( View view){ deleted = pictureFile.delete(); //startActivity(home); close(); finish(); } 

Solutions Collecting From Web of "File.delete()不会完全删除留下的图像空白图像文件"

这不是对你的具体问题的直接回答,但是我想提出一个完全避免这个问题的不同的工作stream程。

当你第一次拍摄的时候,把它保存在内存中(使用BitmapFactory.decodeByteArray代替BitmapFactory.decodeFile ),或者把文件写入临时文件(参见File.createTempFile )。 在这两种情况下,这个想法是不要将文件写入到图库的目录中。

然后,如果和当用户select“保存”,写/复制文件到画廊的目录。 如果他们select“删除”,删除临时文件(或不要,并让操作系统清理)。

一旦你写了文件(保存),使用一个特定的文件更新画廊

 sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(myNewFile))); 

正如我在一张照片之后如何更新Android图库中所提到的那样?