代码之家  ›  专栏  ›  技术社区  ›  Ian Vink

Android下载Zip到SD卡?

  •  4
  • Ian Vink  · 技术社区  · 14 年前

    我有一个100兆zip文件,我需要下载时,应用程序第一次启动。它需要解压缩到SD卡(400兆)。

    我不想让它接触到手机的存储空间,因为很多手机的存储空间里不会有400兆欧的空闲空间。

    能做到这一点吗(任何人都有一个例子?)

    谢谢, 伊恩

    1 回复  |  直到 14 年前
        1
  •  9
  •   Mathias Conradt    14 年前

    可以做到的。你到底在找什么?下载程序或如何进行检查? 这里是下载方法,您应该在AsyncTask中运行它。

    /**
     * Downloads a remote file and stores it locally
     * @param from Remote URL of the file to download
     * @param to Local path where to store the file
     * @throws Exception Read/write exception
     */
    static private void downloadFile(String from, String to) throws Exception {
        HttpURLConnection conn = (HttpURLConnection)new URL(from).openConnection();
        conn.setDoInput(true);
        conn.setConnectTimeout(10000); // timeout 10 secs
        conn.connect();
        InputStream input = conn.getInputStream();
        FileOutputStream fOut = new FileOutputStream(to);
        int byteCount = 0;
        byte[] buffer = new byte[4096];
        int bytesRead = -1;
        while ((bytesRead = input.read(buffer)) != -1) {
            fOut.write(buffer, 0, bytesRead);
            byteCount += bytesRead;
        }
        fOut.flush();
        fOut.close();
    }
    

    // check for wifi or 3g
    ConnectivityManager mgrConn = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    TelephonyManager mgrTel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    if ((mgrConn.getActiveNetworkInfo()!=null && mgrConn.getActiveNetworkInfo().getState()==NetworkInfo.State.CONNECTED)
           || mgrTel.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS) { 
     ...
    

    否则,当人们需要通过慢速电话网络下载100m时,他们会发疯。