2017-01-19 19 views
0

Я хочу иметь image.png внутри кеша/изображений/во внутреннем хранилище Android.Как создать файл изображения внутри внутреннего каталога кэша в Android

Я не в состоянии иметь это с помощью следующего кода:

File directory = new File(getContext().getCacheDir(), "images"); 
directory.mkdirs(); 


File mypath=new File(directory,"image.png"); 

FileOutputStream fos = null; 
try { 
    fos = new FileOutputStream(mypath); 

    bmap.compress(Bitmap.CompressFormat.PNG, 100, fos); 
} catch (Exception e) { 
    e.printStackTrace(); 
} finally { 
    try { 
     fos.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
}  

С выше коде я даже не в состоянии создать каталог с именем изображения. Помогите, я новичок.

+0

вы добавили разрешение? – Jayanth

+0

Я добавил в манифест . Но я не думаю, что внутреннее хранилище требует этого разрешения. – user1590595

+1

Что заставляет вас думать, что вы не можете создать каталог с изображениями? Вы получаете исключение? – ianhanniballake

ответ

1

Попробуйте это:

File sd = getCacheDir(); 
      File folder = new File(sd, "/myfolder/"); 
      if (!folder.exists()) { 
       if (!folder.mkdir()) { 
        Log.e("ERROR", "Cannot create a directory!"); 
       } else { 
        folder.mkdirs(); 
       } 
      } 

      File fileName = new File(folder,"mypic.jpg"); 

      try { 
         FileOutputStream outputStream = new FileOutputStream(String.valueOf(fileName)); 
         bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); 
         outputStream.close(); 

       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
+0

это сработало. Благодарю. Мне не хватало «/» оба раза. – user1590595

+0

'Log.e (" ERROR "," Невозможно создать каталог! ");'. Вы должны добавить инструкцию 'return;', поскольку нет смысла пытаться создать файл в директории, которая не существует. – greenapps

+0

'else { folder.mkdirs(); } '. Вы также должны проверить возвращаемое значение mkdirs(). И почему вы используете mkdir() AND mkdirs()? Только Mkdirs(). – greenapps

 Смежные вопросы

  • Нет связанных вопросов^_^