Wilcomir
10-12-2006, 18:48
ciao a tutti, sto realizzando un programmino che scarica una pagina web salvandola in un file di testo. ora, nella finestra di attesa che compare vorrei mettere una progressBar, solo che per visualizzare una percentuale giusta dovrei conoscere la grandezza della pagina, o perlomeno il numero di righe totali visto che è un database composto da righe. un metodo che avevo pensato è quello di considerare come righe totali quelle della volta precedente visto che tanto non varia di molto, e varia al massimo una volta al giorno. ah stiamo parlando di circa 20mila righe. vi copio la porzione di codice dedicata al download...
package download;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class FileDownloader {
private static BufferedWriter fileOut;
private static FileWriter fw;
private String server;
private String sqlTextFile;
private int rows;
/**
* Costruisce un oggetto settato per scaricare e scrivere in un file il
* map.sql
*
* @param server
* il numero di server da cui scaricare
*/
public FileDownloader(String server) {
sqlTextFile = ("sqlText_s" + server + ".txt");
this.server = server;
try {
fw = new FileWriter(sqlTextFile);
} catch (IOException io) {
io.printStackTrace();
}
fileOut = new BufferedWriter(fw);
}
/**
* Scarica il map.sql e scrive il file sqlText_s[server].txt
*
*/
public void download() {
try {
URL travian = new URL("http://s" + this.server
+ ".travian.it/map.sql");
BufferedReader in = new BufferedReader(new InputStreamReader(
travian.openStream()));
String inputLine;
rows = 0;
while ((inputLine = in.readLine()) != null) {
fileOut.write(inputLine + "\r\n");
rows++;
}
fileOut.close();
in.close();
} catch (MalformedURLException mf) {
//TODO indirizzo errato
mf.printStackTrace();
} catch (IOException io) {
io.printStackTrace();
}
}
/**
* Ritorna il numero di righe scritte nel file.
*
* @return il numero di righe
*/
public int getRows() {
return rows;
}
}
sapreste darmi una mano?
ciao!
package download;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class FileDownloader {
private static BufferedWriter fileOut;
private static FileWriter fw;
private String server;
private String sqlTextFile;
private int rows;
/**
* Costruisce un oggetto settato per scaricare e scrivere in un file il
* map.sql
*
* @param server
* il numero di server da cui scaricare
*/
public FileDownloader(String server) {
sqlTextFile = ("sqlText_s" + server + ".txt");
this.server = server;
try {
fw = new FileWriter(sqlTextFile);
} catch (IOException io) {
io.printStackTrace();
}
fileOut = new BufferedWriter(fw);
}
/**
* Scarica il map.sql e scrive il file sqlText_s[server].txt
*
*/
public void download() {
try {
URL travian = new URL("http://s" + this.server
+ ".travian.it/map.sql");
BufferedReader in = new BufferedReader(new InputStreamReader(
travian.openStream()));
String inputLine;
rows = 0;
while ((inputLine = in.readLine()) != null) {
fileOut.write(inputLine + "\r\n");
rows++;
}
fileOut.close();
in.close();
} catch (MalformedURLException mf) {
//TODO indirizzo errato
mf.printStackTrace();
} catch (IOException io) {
io.printStackTrace();
}
}
/**
* Ritorna il numero di righe scritte nel file.
*
* @return il numero di righe
*/
public int getRows() {
return rows;
}
}
sapreste darmi una mano?
ciao!