====== Java.Wget ======
Downloading files from web with Java
/*
* This is a simply wget.
* You can test your URL
*
* $Log$
*/
import java.io.IOException;
import java.io.EOFException;
import java.io.DataInputStream;
import java.io.PrintStream;
import java.net.URL;
import java.net.URLConnection;
import java.net.HttpURLConnection;
/**
* @version $Revision$
*/
public class wget {
static final PrintStream out = System.out;
static final String commandName = wget.class.getName();
static int count;
static boolean verb;
static boolean output = true;
public static void main(String args[]) throws IOException {
try {
while (args[0].charAt(0) == '-') {
String argument = args[0].substring(1);
if (argument.equals("v")) {
verb = true;
} else if (argument.equals("np")) {
output = false;
}
args[0] = args[1];
if (args.length > 2) {
args[1] = args[2];
}
}
} catch (ArrayIndexOutOfBoundsException e) {
out.println( "USAGE: " + commandName + " [-v] [-np] " );
out.println( "\t-v : verbose all action." );
out.println( "\t-np : don't print the data from the URL." );
System.exit( 1 );
}
URLConnection url = (new URL(args[0])).openConnection();
if (url instanceof HttpURLConnection) {
readHttpURL((HttpURLConnection) url);
} else {
readURL(url);
}
}
public static final void readURL(URLConnection url) throws IOException {
DataInputStream in = new DataInputStream(url.getInputStream());
printHeader(url);
try {
while (true) {
writeChar((char) in.readUnsignedByte());
}
} catch (EOFException e) {
if (output) verbose("\n");
verbose(commandName +
": Read " + count +
" bytes from " + url.getURL());
} catch (IOException e) {
out.println( e + ": " + e.getMessage());
if (output) verbose("\n");
verbose(commandName +
": Read " + count +
" bytes from " + url.getURL());
}
System.exit(0);
}
public static final void readHttpURL(HttpURLConnection url)
throws IOException {
long before, after;
url.setAllowUserInteraction (true);
verbose(commandName + ": Contacting the URL ...");
url.connect();
verbose(commandName + ": Connect. Waiting for reply ...");
before = System.currentTimeMillis();
DataInputStream in = new DataInputStream(url.getInputStream());
after = System.currentTimeMillis();
verbose(commandName + ": The reply takes " +
((int) (after - before) / 1000) + " seconds");
before = System.currentTimeMillis();
try {
if (url.getResponseCode() != HttpURLConnection.HTTP_OK) {
out.println(commandName + ": " + url.getResponseMessage());
} else {
printHeader(url);
while (true) {
writeChar((char) in.readUnsignedByte());
}
}
} catch (EOFException e) {
after = System.currentTimeMillis();
int milliSeconds = (int) (after-before);
if (output) verbose("\n");
verbose(commandName +
": Read " + count +
" bytes from " + url.getURL());
verbose(commandName + ": HTTP/1.0 " + url.getResponseCode() +
" " + url.getResponseMessage());
url.disconnect();
verbose(commandName + ": It takes " + (milliSeconds/1000) +
" seconds" + " (at " + round(count/(float) milliSeconds) +
" K/sec).");
if (url.usingProxy()) {
verbose(commandName + ": This URL uses a proxy");
}
} catch (IOException e) {
out.println( e + ": " + e.getMessage());
if (output) verbose("\n");
verbose(commandName +
": I/O Error : Read " + count +
" bytes from " + url.getURL());
out.println(commandName + ": I/O Error " + url.getResponseMessage());
}
System.exit(0);
}
public static final void printHeader(URLConnection url) {
verbose(wget.class.getName() + ": Content-Length : " +
url.getContentLength() );
verbose(wget.class.getName() + ": Content-Type : " +
url.getContentType() );
if (url.getContentEncoding() != null)
verbose(wget.class.getName() + ": Content-Encoding : " +
url.getContentEncoding() );
if (output) verbose("");
}
public final static void writeChar(char c) {
if (output) out.print(c);
count++;
}
public static final void verbose(String s) {
if (verb) out.println( s );
}
public static final float round(float f) {
return Math.round(f * 100) / (float) 100;
}
}
[[http://koala.ilog.fr/plh/generator/wget.html]]
import java.io.*;
import java.net.*;
import java.util.Vector;
/** This class does a simple HTTP GET and writes the retrieved content to a local file
*
* @author Brian Pipa - http://pipasoft.com
* @version 1.0
*/
public class wget {
static final String FS = File.separator;
/** This method does the actual GET
*
* @param theUrl The URL to retrieve
* @param filename the local file to save to
* @exception IOException
*/
public void get(String theUrl, String filename) throws IOException
{
try {
URL gotoUrl = new URL(theUrl);
InputStreamReader isr = new InputStreamReader(gotoUrl.openStream());
BufferedReader in = new BufferedReader(isr);
StringBuffer sb = new StringBuffer();
String inputLine;
boolean isFirst = true;
//grab the contents at the URL
while ((inputLine = in.readLine()) != null){
sb.append(inputLine+"\r\n");
}
//write it locally
createAFile(filename, sb.toString());
}
catch (MalformedURLException mue) {
mue.printStackTrace();
}
catch (IOException ioe) {
throw ioe;
}
}
//creates a local file
/** Writes a String to a local file
*
* @param outfile the file to write to
* @param content the contents of the file
* @exception IOException
*/
public static void createAFile(String outfile, String content) throws IOException {
FileOutputStream fileoutputstream = new FileOutputStream(outfile);
DataOutputStream dataoutputstream = new DataOutputStream(fileoutputstream);
dataoutputstream.writeBytes(content);
dataoutputstream.flush();
dataoutputstream.close();
}
/** The main method.
*
* @param args
*/
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("\nUsage: java wget URL localfilename");
System.out.println("Example: java wget http://google.com google.html");
System.exit(1);
}
try {
wget httpGetter = new wget();
httpGetter.get(args[0], args[1]);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
[[http://pipasoft.com/free-java-classes/download/wget.java]]
import java.io.*;
import java.net.*;
/*
* Command line program to download data from URLs and save
* it to local files. Run like this:
* java FileDownload http://schmidt.devlib.org/java/file-download.html
* @author Marco Schmidt
*/
public class FileDownload {
public static void download(String address, String localFileName) {
OutputStream out = null;
URLConnection conn = null;
InputStream in = null;
try {
URL url = new URL(address);
out = new BufferedOutputStream(
new FileOutputStream(localFileName));
conn = url.openConnection();
in = conn.getInputStream();
byte[] buffer = new byte[1024];
int numRead;
long numWritten = 0;
while ((numRead = in.read(buffer)) != -1) {
out.write(buffer, 0, numRead);
numWritten += numRead;
}
System.out.println(localFileName + "\t" + numWritten);
} catch (Exception exception) {
exception.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
} catch (IOException ioe) {
}
}
}
public static void download(String address) {
int lastSlashIndex = address.lastIndexOf('/');
if (lastSlashIndex >= 0 &&
lastSlashIndex < address.length() - 1) {
download(address, address.substring(lastSlashIndex + 1));
} else {
System.err.println("Could not figure out local file name for " +
address);
}
}
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
download(args[i]);
}
}
}
[[http://schmidt.devlib.org/java/file-download.html]]