Desidero scaricare un file di testo da un URL Web e salvarlo localmente sul dispositivo e utilizzarlo nella mia app.Scaricamento di un file di testo dal web
Codice:
try {
File file = new File(getFilesDir(), "file.txt");
if (file.length() > 0) {
//File already exists and it is not empty
return;
}
URL url = new URL("https://www.abc.com/file.txt");
FileOutputStream fos = new FileOutputStream(file);
InputStream in = url.openStream();
byte[] buffer = new byte[1024];
int length = 0;
while ((length = in.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
fos.flush();
fos.close();
} catch (Exception e) {
// TODO:
}
Come si può vedere, il codice va con getFilesDir()
partendo dal presupposto che esiste sempre. Tuttavia ci sono alcune domande, con corretta connessione di rete e permessi:
- La mia ipotesi di
getFilesDir()
fallisce in ogni caso? - Esistono casi di file non scaricati/contenuto errato ecc., Con questo codice?
- Una volta affrontato un problema in cui il file è stato scaricato ma ha tutti i caratteri codificati, non importa quante volte lo ho scaricato, aveva ancora lo stesso testo codificato. Solo quando ho reinstallato la mia app, è stato scaricato il testo corretto. E non ha mai avuto quel problema da allora. Qualche ragione per quel comportamento strano?
EDIT: Ecco che cosa ottengo come il contenuto quando si tenta di leggere il file che ho scaricato (succede a volte, 1 su 10) mostrato in logcat:
codice per leggere il file:
BufferedReader inputReader= = new BufferedReader(
new InputStreamReader(new FileInputStream(file)));
String inputString;
StringBuffer stringBuffer = new StringBuffer();
while ((inputString = inputReader.readLine()) != null) {
Log.e("inputString: ", inputString);
}
inputReader.close();
Thank You
getFilesDir() recapiterà sempre una directory di file. Ma potrebbe non esistere ancora penso. Quindi il codice viene scaricato? – greenapps
Finora ciò che mai il dispositivo/emulatore ho testato, scarica il file correttamente. Ma vedo alcuni utenti che segnalano alcuni problemi. – Housefly
Dai un'occhiata a questa domanda: [Android: come scaricare il file dal server e salvarlo nella cartella specifica in sdcard] (http://stackoverflow.com/questions/16117067/androidhow-to-download-the-file- from-the-server-and-save-it-in-specific-folder) –