public class ImageTest {
public static void main(String[] args) {
fazerDownload();
}
public static void fazerDownload() {
try {
URL img = new URL(“http://www.google.com.br/images/logo_sm.gif”);
ReadableByteChannel rbc = Channels.newChannel(img.openStream());
FileOutputStream fos = new FileOutputStream(“c:/teste.gif”);
fos.getChannel().transferFrom(rbc, 0, 1 << 24);
fos.close();
System.out.println(“Imagem salva\n”);
} catch (Exception e) {
e.printStackTrace();
System.out.println(“Erro ao salvar arquivo.\n”);
}
}
}[/code]
O programa funciona de modo satisfatório. Entretanto, gostaria de saber como verificar a porcentagem do arquivo que já foi baixada. Existe alguma forma de fazer isso com este código ou devo alterar o funcionamento desde o princípio?
Você pode substituir a única chamada a:
fos.getChannel().transferFrom(rbc, 0, 1 << 24);
por várias chamadas a transferFrom, mas transferindo apenas 1KB de cada vez (acho que você é esperto e sabe que parâmetros você tem de passar). Então você vai mostrando o progresso (admitindo-se que você consiga achar o tamanho do dado a ser baixado.
public class ImageTest {
public static void main(String[] args) {
fazerDownload();
}
public static void fazerDownload() {
int tamanhoTotal;
int position = 0;
long transBytes;