Java Reference
In-Depth Information
Example 5-1 doesn't use the getContent() method. Instead, it calls openStream()
to returnan InputStream from which the contents of the URL can be downloaded.
This InputStream is connected, through the network, to the remote resource
named by the URL, but the URL class hides all the details of setting up this connec-
tion. (In fact, the connection is set up by a protocol handler class; the Java SDK
has default handlers for the most common network protocols, including http: , ftp: ,
mailto: and Þle: .)
Example 5-1 is a simple standalone program that downloads the contents of a
specified URL and saves it in a file or writes it to the console. You'll note that most
of this program looks like it belongs in Chapter 3, Input/Output . In fact, as we'll
see in this and other examples in this chapter, almost all networking involves the
use of the I/O techniques we learned about in that chapter.
Example 5•1: GetURL.java
package com.davidflanagan.examples.net;
import java.io.*;
import java.net.*;
/**
* This simple program uses the URL class and its openStream() method to
* download the contents of a URL and copy them to a file or to the console.
**/
public class GetURL {
public static void main(String[] args) {
InputStream in = null;
OutputStream out = null;
try {
// Check the arguments
if ((args.length != 1) && (args.length != 2))
throw new IllegalArgumentException("Wrong number of args");
// Set up the streams
URL url = new URL(args[0]); // Create the URL
in = url.openStream(); // Open a stream to it
if (args.length == 2) // Get an appropriate output stream
out = new FileOutputStream(args[1]);
else out = System.out;
// Now copy bytes from the URL to the output stream
byte[] buffer = new byte[4096];
int bytes_read;
while((bytes_read = in.read(buffer)) != -1)
out.write(buffer, 0, bytes_read);
}
// On exceptions, print error message and usage message.
catch (Exception e) {
System.err.println(e);
System.err.println("Usage: java GetURL <URL> [<filename>]");
}
finally { // Always close the streams, no matter what.
try { in.close(); out.close(); } catch (Exception e) {}
}
}
}
Search WWH ::




Custom Search