Невозможно кэшировать изображение в файл, файл не существует - PullRequest
0 голосов
/ 20 мая 2011

Я надеюсь, что в моем коде есть очевидная проблема, которую я пропускаю, но я проверяю, существует ли файл, в который я собираюсь записать, и который можно записать. Сбой на fos = new FileOutputStream( file.getPath() ); с FileNotFound исключением.

File file = new File( cacheDir, url.getFile() );
        if ( file.exists() ) {
            file.delete();
        }

        try {
            file.mkdirs();
            file.createNewFile();
        }
        catch (IOException e) {
            MyLog.e( "Unable to create file: " + file.getPath() );
        }

        if ( file.exists() && file.canWrite() ) {
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream( file );
            }
            catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            if ( !bitmap.compress( CompressFormat.PNG, 100, fos ) ) {
                MyLog.e( "Unable to cache image: " + path );
            }

            if ( fos != null ) {
                try {
                    fos.flush();
                    fos.close();
                }
                catch (IOException e) {
                    e.printStackTrace();
                }
            }

1 Ответ

1 голос
/ 20 мая 2011

Могу поспорить, у вас есть несколько забавных символов в имени файла.

Попробуйте

File file = new File( cacheDir, URLEncoder.encode(url.getFile()) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...