我正在使用以下代码从服务器下载文件,然后将其写入sd卡的根目录,一切正常:
package com.downloader; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.os.Environment; import android.util.Log; public class Downloader { public void DownloadFile(String fileURL, String fileName) { try { File root = Environment.getExternalStorageDirectory(); URL u = new URL(fileURL); HttpURLConnection c = (HttpURLConnection) u.openConnection(); c.setRequestMethod("GET"); c.setDoOutput(true); c.connect(); FileOutputStream f = new FileOutputStream(new File(root, fileName)); InputStream in = c.getInputStream(); byte[] buffer = new byte[1024]; int len1 = 0; while ((len1 = in.read(buffer)) > 0) { f.write(buffer, 0, len1); } f.close(); } catch (Exception e) { Log.d("Downloader", e.getMessage()); } } }
但是,using Environment.getExternalStorageDirectory();表示文件将始终写入root /mnt/sdcard。是否可以指定某个文件夹来写入文件?
using Environment.getExternalStorageDirectory()
例如: /mnt/sdcard/myapp/downloads
/mnt/sdcard/myapp/downloads
File sdCard = Environment.getExternalStorageDirectory(); File dir = new File (sdCard.getAbsolutePath() + "/dir1/dir2"); dir.mkdirs(); File file = new File(dir, "filename"); FileOutputStream f = new FileOutputStream(file); ...