Lendo o conteúdo do site em string

Atualmente, estou trabalhando em uma classe que pode ser usada para ler o conteúdo do site especificado pelo URL. Estou apenas começando minhas aventuras comjava.io ejava.net então preciso consultar meu projeto.

Uso

TextURL url = new TextURL(urlString);
String contents = url.read();

Meu código:

package pl.maciejziarko.util;

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

public final class TextURL
{
    private static final int BUFFER_SIZE = 1024 * 10;
    private static final int ZERO = 0;
    private final byte[] dataBuffer = new byte[BUFFER_SIZE];
    private final URL urlObject;

    public TextURL(String urlString) throws MalformedURLException
    {
        this.urlObject = new URL(urlString);
    }

    public String read() 
    {
        final StringBuilder sb = new StringBuilder();

        try
        {
            final BufferedInputStream in =
                    new BufferedInputStream(urlObject.openStream());

            int bytesRead = ZERO;

            while ((bytesRead = in.read(dataBuffer, ZERO, BUFFER_SIZE)) >= ZERO)
            {
                sb.append(new String(dataBuffer, ZERO, bytesRead));
            }
        }
        catch (UnknownHostException e)
        {
            return null;
        }
        catch (IOException e)
        {
            return null;
        }

        return sb.toString();
    }

    //Usage:
    public static void main(String[] args)
    {
        try
        {
            TextURL url = new TextURL("http://www.flickr.com/explore/interesting/7days/");
            String contents = url.read();

            if (contents != null)
                System.out.println(contents);
            else
                System.out.println("ERROR!");
        }
        catch (MalformedURLException e)
        {
            System.out.println("Check you the url!");
        }
    }
}

Minha pergunta é: é uma boa maneira de conseguir o que eu quero? Existem soluções melhores?

Eu particularmente não gostei desb.append(new String(dataBuffer, ZERO, bytesRead)); mas não consegui expressar de maneira diferente. É bom criar uma nova String a cada iteração? Suponho que nã

Alguns outros pontos fracos?

Desde já, obrigado

questionAnswers(6)

yourAnswerToTheQuestion