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