文件在android上保存输出流

时间:2014-10-22 03:34:03

标签: android android-camera storage

我正在制作可以拍照的Android应用程序。我写了一些代码来保存应用程序拍摄的照片。我要保存文件的目录位于内部存储和名为DCIM的文件夹中。但是,每次我试图保存照片时,应用程序都会崩溃。以下是我的代码:

FileOutputStream outStream = null;
                     try {
                         outStream = new FileOutputStream(String.format(
                                 "sdcard/DCIM/jgjk.jpg", System.currentTimeMillis()));
                         outStream.write(data);
                         outStream.close();
                         Log.d("Log", "onPictureTaken - wrote bytes: " + data.length);
                     } catch (FileNotFoundException e) {
                         e.printStackTrace();
                     } catch (IOException e) {
                         e.printStackTrace();
                     } finally {
                     }

代码有什么问题吗?

1 个答案:

答案 0 :(得分:0)

这样可以正常使用

在onActivityResult中获取位图

public void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
         if(requestCode==PIC_CROP)
        {
             if(resultCode==RESULT_OK)
             {
             Bundle extras = data.getExtras();
                if (extras != null) {               
                    Bitmap bmp = extras.getParcelable("data");
                    savePhoto(bmp);
                }
             }
        }

}


public void savePhoto(Bitmap bmp)
        {
        dir = Environment.getExternalStorageDirectory().toString() + "/DCIM/"; 
        File newdir = new File(dir); 
        newdir.mkdirs();
        FileOutputStream out = null;

        //file name
        Calendar c = Calendar.getInstance();
        String date = fromInt(c.get(Calendar.MONTH))
                    + fromInt(c.get(Calendar.DAY_OF_MONTH))
                    + fromInt(c.get(Calendar.YEAR))
                    + fromInt(c.get(Calendar.HOUR_OF_DAY))
                    + fromInt(c.get(Calendar.MINUTE))
                    + fromInt(c.get(Calendar.SECOND));
        File imageFileName = new File(newdir, "crop_"+date.toString() + ".jpg");

        try
        {
         out = new FileOutputStream(imageFileName);
         bmp.compress(Bitmap.CompressFormat.JPEG, 100, out);
         out.flush();
         out.close();
         out = null;
        } catch (Exception e)
        {
        e.printStackTrace();
        }
        }


public String fromInt(int val)
{
return String.valueOf(val);
}