URL - FileNotFoundException for image file in Android

前端 未结 6 1730
再見小時候
再見小時候 2020-12-17 04:04

I\'m trying to get a image from particular URL but it throwsFileNotFoundException. If I try to open the url from my browser, i can see the images. Please help.

相关标签:
6条回答
  • 2020-12-17 04:26

    Try this:

      BufferedInputStream inputStream = null;
      OutputStream out = null;
    
      String fileName = null;
      String path = null;
      File savedFile = null;
    
      try
      {
          // Replace your URL here.
          URL fileURL = new URL("http://enter.your.url.here");
          URLConnection connection = fileURL.openConnection();
          connection.connect();
    
          inputStream = new java.io.BufferedInputStream(connection.getInputStream());
    
          // Replace your save path here.
          File fileDir = new File("path/to/save");
          fileDir.mkdirs();
          savedFile = new File("path/to/save", fileName);
          out = new FileOutputStream(savedFile);
    
          byte buf[] = new byte[1024];
          int len;
    
          long total = 0;
    
          while ((len = inputStream.read(buf)) != -1)
          {
            total += len;
            out.write(buf, 0, len);
          }
    
          out.close();
          inputStream.close();
      }
      catch (Exception)
      {
    
      }
    
    0 讨论(0)
  • 2020-12-17 04:31

    In ...

    FileOutputStream f = new FileOutputStream(new File(root, FILENAME));
    

    Try replacing FILENAME with fileURL. Also, at which line is the exception thrown? That would help.

    0 讨论(0)
  • 2020-12-17 04:32

    Try the below code. It should work!

    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URL;
    
    
    public class DownloadManager {
    
        public static void downLoadImage(String imageURL, String destinationFileName) throws IOException {
            URL url = new URL(imageURL);
            InputStream inputStream = url.openStream();
            OutputStream outputStream = new FileOutputStream(destinationFileName);
            byte[] byteData = new byte[2048];
            int length;
            while((length=inputStream.read(byteData))!=-1) {
                outputStream.write(byteData, 0, length);
            }
            inputStream.close();
            outputStream.close();
        }
    
        public static void main(String[] args) throws IOException {
            String imageURL = "http://sposter.smartag.my/images/KFC_Voucher.jpg";
            String destinationFileName = "C:/Users/sarath_sivan/Desktop/caldophilus.jpg";
            downLoadImage(imageURL, destinationFileName);
        }
    }
    
    0 讨论(0)
  • 2020-12-17 04:39

    i try this and its work fine. Thanks.

    URL url = new URL(fileURL);
    URLConnection conexion = url.openConnection();
    conexion.connect();
    int lenghtOfFile = conexion.getContentLength();
    Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile);
    InputStream input = new BufferedInputStream(url.openStream());
    OutputStream output = new FileOutputStream("/sdcard/caldophilus.jpg");
    byte data[] = new byte[1024];
    long total = 0;
    while ((count = input.read(data)) != -1) {
    total += count;
    output.write(data, 0, count);
    }
    output.flush();
    output.close();
    input.close();
    
    0 讨论(0)
  • 2020-12-17 04:46

    Try this at once -

    try {
                url = paths[0];
                HttpURLConnection connection = (HttpURLConnection) url
                        .openConnection();
                int length = connection.getContentLength();
                InputStream is = (InputStream) url.getContent();
                byte[] imageData = new byte[length];
                int buffersize = (int) Math.ceil(length / (double) 100);
                int downloaded = 0;
                int read;
                while (downloaded < length) {
                    if (length < buffersize) {
                        read = is.read(imageData, downloaded, length);
                    } else if ((length - downloaded) <= buffersize) {
                        read = is.read(imageData, downloaded, length
                                - downloaded);
                    } else {
                        read = is.read(imageData, downloaded, buffersize);
                    }
                    downloaded += read;
                    publishProgress((downloaded * 100) / length);
                }
                Bitmap bitmap = BitmapFactory.decodeByteArray(imageData, 0,
                        length);
                if (bitmap != null) {
                    Log.i(TAG, "Bitmap created");
                } else {
                    Log.i(TAG, "Bitmap not created");
                }
                is.close();
                return bitmap;
            } catch (MalformedURLException e) {
                Log.e(TAG, "Malformed exception: " + e.toString());
            } catch (IOException e) {
                Log.e(TAG, "IOException: " + e.toString());
            } catch (Exception e) {
                Log.e(TAG, "Exception: " + e.toString());
            }
    

    And, just take a look at here

    0 讨论(0)
  • 2020-12-17 04:50
    String fileURL = "http://sposter.smartag.my/images/KFC_Voucher.jpg";
    
    String FILENAME = "caldophilus.jpg";
    
    URL u = new URL(fileURL);
    
    HttpURLConnection c = (HttpURLConnection) u.openConnection();
    
    c.setRequestMethod("GET");
    
    //c.setDoOutput(true); =========== remove this;
    
    c.connect();
    
    0 讨论(0)
提交回复
热议问题