Re: Get a file from the web using java
"Allan M. Bruce" <allanmb@TAKEAWAYdsl.pipex.com> wrote in message
news:VLidneaCy5nJudPZnZ2dnUVZ8qidnZ2d@pipex.net...
I want to be able to get a file from the web from my java program and read
the contents. How can I do this?
For example, I want to get http://www.somewhere.com/file.txt so that I can
read the contents.
I _think_ something like the following should work for you:
/* Create URL pointing at online file. */
URL textFileUrl = null;
try {
textFileUrl = new URL("http://www.somewhere.com/file.txt");
} catch (MalformedURLException excp) {
//error handling
}
/* Open a stream on the URL. */
BufferedInputStream bufferedInputStream = null;
try {
bufferedInputStream = new
BufferedInputStream(textFileUrl.openStream());
} catch (IOException io_excp) {
//error handling
}
Now, I'm not entirely sure which subclass of InputStream is best for your
data so have a look at the (abstract) java.io.InputStream class and see
which subclass suits you best.
You may also have to futz around with the stream once you get it; there may
be encoding/decoding issues. You will also need to write a loop to get the
data from the stream; that will go something like this:
byte[] bytes = new byte[102400]; //choose a convenient size for your
array
int len;
try {
while ((len = bufferedInputStream.read(bytes)) != -1) {
System.out.println("len=" + len); //should write a line for each
arrayful of data it gets
}
} catch (IOException io_excp) {
//error handling
}
You may want to convert the 'bytes' array to characters and/or strings and
then store it somewhere, like a StringBuffer, as you fill the array each
time.
I would much prefer to read the stream as if it were a text file, one line
at a time, but I don't know of any way to read an online file that way.
There may be a way to read it a line at a time: I just don't know of one.
Then again, there's a lot I don't know.
Sorry, this is not a very complete answer but it should get you started.
With a bit of luck, someone else will jump in if this is the whole wrong
approach!
--
Rhino