2012-02-09 62 views
1

我有文件下载问题,无法下载Android手机中的文件 - Android ..?

我能够在模拟器中下载文件,但它不适用于手机。 我已经定义了互联网的权限,并写入SD卡

我在服务器上有一个doc文件,如果用户点击下载。它下载文件。此在模拟器中正常工作,但不能在电话工作,

Plz帮助我找到解决方案。

谢谢。

* 编辑* 我下载的文件

public void downloadFile(String _url, String fileName) { 
     File PATH = Environment 
       .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 
     try { 
      PATH.mkdirs(); 
      URL url = new URL(_url); // you can write here any link 
      File file = new File(PATH, fileName); 

      long startTime = System.currentTimeMillis(); 
      Log.d("Manager", "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(50); 
      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.close(); 
      Log.d("ImageManager", 
        "download ready in" 
          + ((System.currentTimeMillis() - startTime)/1000) 
          + " sec"); 

     } catch (IOException e) { 
      Log.d("ImageManager", "Error: " + e); 
     } 
    } 
+1

logcat中的任何错误?也许一些代码片段? – 2012-02-09 09:22:53

+1

粘贴一些代码,用这个信息很难帮你:) – oriolpons 2012-02-09 09:23:58

+0

Nop,logcat不会给出任何错误。 – 2012-02-09 09:24:20

回答

2

尝试给出波纹管的段码...

File PATH = Environment 
       .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 
     try { 
      //set the download URL, a url that points to a file on the internet 
      //this is the file to be downloaded 
      _url = _url.replace(" ", "%20"); 
      URL url = new URL(_url); 

      //create the new connection 
      HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 

      //set up some things on the connection 
      urlConnection.setRequestMethod("GET"); 
      urlConnection.setDoOutput(true); 


      //and connect! 
      urlConnection.connect(); 

      //create a new file, specifying the path, and the filename 
      //which we want to save the file as. 
      File file = new File(PATH,fileName); 

      //this will be used to write the downloaded data into the file we created 
      FileOutputStream fileOutput = new FileOutputStream(file); 

      //this will be used in reading the data from the internet 
      InputStream inputStream = urlConnection.getInputStream(); 

      //this is the total size of the file 
      int totalSize = urlConnection.getContentLength(); 
      Log.i("Download", totalSize+""); 
      //variable to store total downloaded bytes 
//   int downloadedSize = 0; 

      //create a buffer... 
      byte[] buffer = new byte[1024]; 
      int bufferLength = 0; //used to store a temporary size of the buffer 

      //now, read through the input buffer and write the contents to the file 
      while ((bufferLength = inputStream.read(buffer)) > 0) { 
        //add the data in the buffer to the file in the file output stream (the file on the sd card 
        fileOutput.write(buffer, 0, bufferLength); 
      } 
      //close the output stream when done 
      fileOutput.close(); 
      return true; 

    //catch some possible errors... 
    } catch (MalformedURLException e) { 
      e.printStackTrace(); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 

请确保您有输入正确的下载路径(URL)