Нет каталога файлов: java.io.IOException: нет такого файла или каталога

#android

#Android

Вопрос:

Я работаю над проектом Android и хочу получить путь к загруженному изображению с камеры или галереи. Все разрешения установлены, и я использую эту функцию, чтобы получить путь, но, похоже, он createNewFile() всегда игнорируется, и я получаю path="" все время.

 public String saveImage(Bitmap myBitmap) {
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    myBitmap.compress(Bitmap.CompressFormat.JPEG, 90, bytes);
    File wallpaperDirectory = new File(
            Environment.getExternalStorageDirectory()   IMAGE_DIRECTORY);
    // have the object build the directory structure, if needed.
    if (!wallpaperDirectory.exists()) {
        wallpaperDirectory.mkdirs();
    }

    try {
        File f = new File(wallpaperDirectory, Calendar.getInstance()
                .getTimeInMillis()   ".jpg");
        f.createNewFile();
        FileOutputStream fo = new FileOutputStream(f);
        fo.write(bytes.toByteArray());
        MediaScannerConnection.scanFile(this,
                new String[]{f.getPath()},
                new String[]{"image/jpeg"}, null);
        fo.close();
        Log.d("TAG", "File Saved::--->"   f.getAbsolutePath());

        return f.getAbsolutePath();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    return "";
}
  

но я получаю проблему в журнале
введите описание изображения здесь

Комментарии:

1. Не уверен, знаете ли вы об этом, но у вас может возникнуть проблема с разрешением A). Б) попробуйте распечатать каталог, в котором вы храните файл, он не жестко запрограммирован, поэтому вам нечего терять. Станьте более уверенным в своем коде, отлаживая, 4 часа отладки каждые 2-3 дня достаточно для каждого проекта.

2. вы нашли решение?

Ответ №1:

Может быть что-то в том, как вы собрали свой путь к файлу, но это недоступно для просмотра в вашем post. Возможно, вы пропустили предоставление разрешений в манифесте, поэтому файл не создан. Попробуйте это:

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

Ответ №2:

Убедитесь, что у вас есть внешняя SD-карта в вашем телефоне, когда вы пытаетесь получить доступ

 Environment.getExternalStorageDirectory()