Save gif file from the URL  
Author Message
mark





PostPosted: 2006-11-28 21:13:00 Top

java-programmer, Save gif file from the URL 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





PostPosted: 2006-11-28 22:06:00 Top

java-programmer >> Save gif file from the URL mark wrote:
> 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. ;-)

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





PostPosted: 2006-11-28 22:37:00 Top

java-programmer >> Save gif file from the URL Thomas Fritsch schrieb:
> mark wrote:
>
>>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; /**/)
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. ;-)
>


--
Thomas
 
 
Steve Smith





PostPosted: 2006-12-1 1:07:00 Top

java-programmer >> Save gif file from the URL mark wrote:
> 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
>

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