0

使用此代码,我可以从 Android 中的 URL 下载文件并将其保存到 SDCard,有没有办法以编程方式打开此文件?

Intent 可以在这方面提供帮助吗?

private static class Task extends AsyncTask<Void, Void, Void> {

    static String DownloadUrl = "http://00.00.00.00/abc.crt";
    static String fileName = "def.crt";

异步任务下载

@Override
protected Void doInBackground(Void... arg0) {
    DownloadFromUrl();
    return null;
}


public static void DownloadFromUrl() {

   try {
           File root = android.os.Environment.getExternalStorageDirectory();               

           File dir = new File (root.getAbsolutePath() + "/SDCard");
           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);
   }

}


}
4

1 回答 1

0

使用 FileInputStream 并将下载的文件加载到内存 http://developer.android.com/reference/java/io/FileInputStream.html

如果文件具有特定扩展名,则可能有其他加载方法,不涉及将其解析为字节数组

于 2013-02-21T09:05:57.910 回答