有谁知道如何通过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