其他分享
首页 > 其他分享> > android-打开失败的EISDIR(是目录)..如何解决此问题?

android-打开失败的EISDIR(是目录)..如何解决此问题?

作者:互联网

每当它给我“无法解码流java.io.FileNotFoundException:/:打开失败的EISDIR(是目录)

我怎样才能摆脱这个错误..在我完成的许多任务中,此类都工作得很好!

这是我用来获取位图的类

private class ImageLoaderTask extends AsyncTask<HashMap<String, Object>, Void, HashMap<String, Object>>{

    @Override
    protected HashMap<String, Object> doInBackground(HashMap<String, Object>... hm) {

        InputStream iStream=null;
        String imgUrl = (String) hm[0].get("image");
        int position = (Integer) hm[0].get("position");

        URL url;
        try {
            url = new URL(imgUrl);

            // Creating an http connection to communicate with url
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

            // Connecting to url
            urlConnection.connect();

            // Reading data from url
            iStream = urlConnection.getInputStream();

            // Getting Caching directory
            File cacheDirectory = getBaseContext().getCacheDir();

            // Temporary file to store the downloaded image
            File tmpFile = new File(cacheDirectory.getPath() + "/wpta_"+position+".png");

            // The FileOutputStream to the temporary file
            FileOutputStream fOutStream = new FileOutputStream(tmpFile);

            // Creating a bitmap from the downloaded inputstream
            Bitmap b = BitmapFactory.decodeStream(iStream);

            // Writing the bitmap to the temporary file as png file
            b.compress(Bitmap.CompressFormat.PNG,100, fOutStream);

            // Flush the FileOutputStream
            fOutStream.flush();

           //Close the FileOutputStream
           fOutStream.close();

            // Create a hashmap object to store image path and its position in the listview
            HashMap<String, Object> hmBitmap = new HashMap<String, Object>();

            // Storing the path to the temporary image file
            hmBitmap.put("photo",tmpFile.getPath());
            Log.d("photopah", tmpFile.getPath());

            // Storing the position of the image in the listview
            hmBitmap.put("position",position);

            // Returning the HashMap object containing the image path and position
            return hmBitmap;

        }catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

解决方法:

您正确地需要致电:

tmpFile.getParentFile().mkdirs();

在创建FileOutputStream之前.

查看更多:FileOutputStream crashes with “open failed: EISDIR (Is a directory)” error when downloading image

标签:bitmapfactory,android
来源: https://codeday.me/bug/20191031/1974065.html