Ich habe eine Anforderung in meiner Android-Anwendung. Ich muss Datei in spezifischem Ordner von sdcard Programmatisch herunterladen und speichern. Ich habe Quellcode entwickelt ..Android: Wie wird die Datei vom Server herunterzuladen und in bestimmten Ordnern in sdcard speichert
und mein Code
String DownloadUrl = "http://myexample.com/android/";
String fileName = "myclock_db.db";
DownloadDatabase(DownloadUrl,fileName);
// and the method is
public void DownloadDatabase(String DownloadUrl, String fileName) {
try {
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File(root.getAbsolutePath() + "/myclock/databases");
if(dir.exists() == false){
dir.mkdirs();
}
URL url = new URL("http://myexample.com/android/");
File file = new File(dir,fileName);
long startTime = System.currentTimeMillis();
Log.d("DownloadManager" , "download url:" +url);
Log.d("DownloadManager" , "download file name:" + fileName);
URLConnection uconn = url.openConnection();
uconn.setReadTimeout(TIMEOUT_CONNECTION);
uconn.setConnectTimeout(TIMEOUT_SOCKET);
InputStream is = uconn.getInputStream();
BufferedInputStream bufferinstream = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(5000);
int current = 0;
while((current = bufferinstream.read()) != -1){
baf.append((byte) current);
}
FileOutputStream fos = new FileOutputStream(file);
fos.write(baf.toByteArray());
fos.flush();
fos.close();
Log.d("DownloadManager" , "download ready in" + ((System.currentTimeMillis() - startTime)/1000) + "sec");
int dotindex = fileName.lastIndexOf('.');
if(dotindex>=0){
fileName = fileName.substring(0,dotindex);
}
catch(IOException e) {
Log.d("DownloadManager" , "Error:" + e);
}
}
Jetzt Das Problem nur leere Datei mit dem Dateinamen myclock_db.db ist auf dem Weg ist, zu speichern. aber ich muss Inhalt der Datei in den spezifischen Ordner herunterladen und speichern. Ich habe versucht, die Datei herunterzuladen, aber ich kann es nicht. Kann mir jemand helfen, das Problem zu lösen ...
Vielen Dank im Voraus ...
Wie kann ich in diesem Beispiel überprüfen, ob Datei herunterladen –
100% abgeschlossen, da Ihre db-Datei einer großen Größe sein kann, habe ich die Datei in Blöcken statt Anhängen all den Strom im Speicher und das Schreiben die gesamte Datei zu schreiben bei dringend empfohlen Einmal. – MikeL