有誰知道如何通過WiFi將文件從網絡服務器(本地主機)保存到SD卡?如何將文件從網站保存到SD卡
我正在做xml解析到我的應用程序,爲此我必須從本地主機下載xml文件到SD卡,然後標記解析。我堅持下載一個XML文件到SD卡。請指導我如何做到這一點..
有誰知道如何通過WiFi將文件從網絡服務器(本地主機)保存到SD卡?如何將文件從網站保存到SD卡
我正在做xml解析到我的應用程序,爲此我必須從本地主機下載xml文件到SD卡,然後標記解析。我堅持下載一個XML文件到SD卡。請指導我如何做到這一點..
您可以使用此方法來從互聯網上下載文件到您的SD卡:
public void DownloadFromUrl(String DownloadUrl, String fileName) {
try {
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "/xmls");
if(dir.exists()==false) {
dir.mkdirs();
}
URL url = new URL(DownloadUrl); //you can write here any link
File file = new File(dir, fileName);
long startTime = System.currentTimeMillis();
Log.d("DownloadManager", "download begining");
Log.d("DownloadManager", "download url:" + url);
Log.d("DownloadManager", "downloaded file name:" + fileName);
/* Open a connection to that URL. */
URLConnection ucon = url.openConnection();
/*
* Define InputStreams to read from the URLConnection.
*/
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
/*
* Read bytes to the Buffer until there is nothing more to read(-1).
*/
ByteArrayBuffer baf = new ByteArrayBuffer(5000);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
/* Convert the Bytes read to a String. */
FileOutputStream fos = new FileOutputStream(file);
fos.write(baf.toByteArray());
fos.flush();
fos.close();
Log.d("DownloadManager", "download ready in" + ((System.currentTimeMillis() - startTime)/1000) + " sec");
} catch (IOException e) {
Log.d("DownloadManager", "Error: " + e);
}
}
您需要下列權限添加到您的AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
我更喜歡建立肥皂服務器,並從應用程序到服務器,並通過接收XML的調用。或者,也許你可以創建一個生成XML的URL,並直接解析URL。
嘗試閱讀更多關於這個LINK
希望我回答這個問題。否則會很樂意幫助,但我需要更詳細的功能描述。
謝謝你,我的問題是我想保存這是從我的本地主機服務器駐留到SD卡上的XML文件。只是爲了保存。 – RAAAAM 2011-03-29 12:30:43
嘿,要做到這一點,我建議只做一個靜態PHP下載腳本([鏈接](http://www.ryboe.com/tutorials/php-headers-force-download)),而不是簡單地從URL下載做你的手機,你設置了SD卡路徑... – 2011-03-30 08:42:29
的Sourav的答案是可以的,但對於大文件大小,您應該在新線程上實現它;因爲在下載時,主線程忙於下載文件。如果等待時間超出預期,系統將生成「無響應」錯誤。
爲了做到這一點,你可以用「TaskAsync」或「IntentService」
這真是太棒了...還有一個問題,你知道如何以不可見模式存儲文件。 (即)存儲文件永遠不會被用戶看到。 – RAAAAM 2011-03-30 04:33:33
對不起,我對此沒有任何意見。也許[這篇文章會幫助](http://stackoverflow.com/questions/1129644/how-to-make-a-file-hidden-in-android-sd-card) – Sourav 2011-03-30 06:23:33
@HariRam:你可能想要把或在AsyncTask或新的Thread中調用這個方法。這樣,下載過程對用戶是隱藏的。 – 2011-12-05 06:41:08