Сохранить растровое изображение в Android в формате JPEG во внешнем хранилище в папке

Я использую этот код для сохранения Bitmap в External Storage, но он не создает папку, если она не существует:

String path = Environment.getExternalStorageDirectory().toString(); OutputStream fOutputStream = null; File file = new File(path + "/Captures/", "screen.jpg"); try { fOutputStream = new FileOutputStream(file); capturedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOutputStream); fOutputStream.flush(); fOutputStream.close(); MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName()); } catch (FileNotFoundException e) { e.printStackTrace(); Toast.makeText(this, "Save Failed", Toast.LENGTH_SHORT).show(); return; } catch (IOException e) { e.printStackTrace(); Toast.makeText(this, "Save Failed", Toast.LENGTH_SHORT).show(); return; } 

Как сохранить изображение в новом каталоге, если оно не существует, и сохранить значение по умолчанию, если папка находится на устройстве?

Solutions Collecting From Web of "Сохранить растровое изображение в Android в формате JPEG во внешнем хранилище в папке"

Попробуйте, это даст вам результат:

 String root = Environment.getExternalStorageDirectory().toString(); File myDir = new File(root + "/req_images"); myDir.mkdirs(); Random generator = new Random(); int n = 10000; n = generator.nextInt(n); String fname = "Image-" + n + ".jpg"; File file = new File(myDir, fname); Log.i(TAG, "" + file); if (file.exists()) file.delete(); try { FileOutputStream out = new FileOutputStream(file); bm.compress(Bitmap.CompressFormat.JPEG, 90, out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } 

Добавьте это, чтобы показать в галерее:

 sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 

Посмотрите на эту ссылку для получения четкого ответа: показать изображения папок в галерее

Пожалуйста, используйте нижеприведенный фрагмент кода, который может помочь

  String path = Environment.getExternalStorageDirectory().toString(); OutputStream fOutputStream = null; File file = new File(path + "/Captures/", "screen.jpg"); if (!file.exists()) { file.mkdirs(); } try { fOutputStream = new FileOutputStream(file); capturedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOutputStream); fOutputStream.flush(); fOutputStream.close(); MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName()); } catch (FileNotFoundException e) { e.printStackTrace(); Toast.makeText(this, "Save Failed", Toast.LENGTH_SHORT).show(); return; } catch (IOException e) { e.printStackTrace(); Toast.makeText(this, "Save Failed", Toast.LENGTH_SHORT).show(); return; } 

Используйте следующее:

 File dir = new File(path + "/Captures/"); if(!dir.exists()) { dir.mkdirs(); } File file = new File(path + "/Captures/", "screen.jpg"); ...... 

Вы должны посмотреть в документации файла, вы найдете метод mkdir (). Это почти то же самое, что и unix one: https://developer.android.com/reference/java/io/File.html#mkdir ()