Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / First Aid / November 2006

Tip: Looking for answers? Try searching our database.

Save gif file from the URL

Thread view: 
mark - 28 Nov 2006 13:12 GMT
Hello,

I just want to save on disc a gif file taken from the internet (i.e.
save as logo.gif the image
http://www.google.com/intl/us_ALL/images/logo.gif ). Is it possible
without much effort (I have read about the extra & not free libraries
but I hope there is a simple way to do so (just read bytes and write
bytes - no modification).

Regards. Marko
Thomas Fritsch - 28 Nov 2006 14:06 GMT
> I just want to save on disc a gif file taken from the internet (i.e.
> save as logo.gif the image
> http://www.google.com/intl/us_ALL/images/logo.gif ). Is it possible
> without much effort (I have read about the extra & not free libraries
> but I hope there is a simple way to do so (just read bytes and write
> bytes - no modification).

In principle it is very easy:

URL url = new URL("http://www.google.com/intl/us_ALL/images/logo.gif");
InputStream input = url.openStream();
OutputStream output = new FileOutputStream("logo.gif");
for (int c = input.read(); c != -1; /**/)
 output.write(c);
input.close();
output.close();

Try/catch for IOExceptions and performance-optimizing is left to the reader
as an exercise. ;-)

Signature

"Thomas:Fritsch$ops.de".replace(':', '.').replace('$', '@')

Thomas Fritsch - 28 Nov 2006 14:36 GMT
Thomas Fritsch schrieb:

>>I just want to save on disc a gif file taken from the internet (i.e.
>>save as logo.gif the image
[quoted text clipped - 9 lines]
> OutputStream output = new FileOutputStream("logo.gif");
> for (int c = input.read(); c != -1; /**/)
Sorry for the bug. I meant:
  for (int c = input.read(); c != -1; c = input.read())
>   output.write(c);
> input.close();
> output.close();
>
> Try/catch for IOExceptions and performance-optimizing is left to the reader
> as an exercise. ;-)

Signature

Thomas

Steve Smith - 30 Nov 2006 17:06 GMT
> Hello,
>
[quoted text clipped - 6 lines]
>
> Regards. Marko

Try this;

import java.net.*;
import java.io.*;

public class saveBinaryFile
{
   public static void main (String args[])
   {
      try
      {
         URL root = new URL(args[0]);
         saveBinaryFile(root);
      }
      catch (MalformedURLException e)
      {
         System.err.println(args[0] + " is not a URL I understand.");
      }
   }

   public static void saveBinaryFile(URL u)
   {
      int bfr = 1;
      try
      {
         URLConnection uc = u .openConnection();
         String        ct = uc.getContentType();
         int           cl = uc.getContentLength();

         if (ct.startsWith("text/") || cl == -1 )
         {
            System.err.println("This is not a binary file.");
            return;
         }

         InputStream theImage  = uc.getInputStream();
         byte[]      b         = new byte[cl];
         int         bytesread = 0;
         int         offset    = 0;

         while (bytesread >= 0)
         {
            bytesread = theImage.read(b, offset, bfr);
            if (bytesread == -1) break;
            offset += bytesread;
         }
         if (offset != cl)
         {
            System.err.println("Error: Only read " + offset + " bytes");
            System.err.println("Expected " + cl + " bytes");
         }
         String           theFile = u.getFile();
         theFile                  =
theFile.substring(theFile.lastIndexOf('/') + 1);

         FileOutputStream fout    = new FileOutputStream(theFile);
         fout.write(b);
      }
      catch (Exception e)
      {
         System.err.println(e);
      }
      return;
   }
}

1. Compile the above.

2. On windows box make a anyname.bat file and paste the following.

REM *** Test of Google logo d/l ***
java saveBinaryFile "http://www.google.com/intl/us_ALL/images/logo.gif"
pause

3. Put both in the same directory.
4. Double click on the bat file.

The image file should be saved in the same directory as the compiled class


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.