android 从网上下载文件

android中如何从网上下载文件源码

String FileName=null;

public void downFile(String url, String path, String fileName) throws IOException {  
  if (fileName == null || fileName == "")   
     this.FileName = url.substring(url.lastIndexOf("/") + 1);   
   else  
      this.FileName = fileName; // 取得文件名,如果输入新文件名,则使用新文件名  
   
  URL Url = new URL(url);  
  URLConnection conn = Url.openConnection();  
  conn.connect();  
  InputStream is = conn.getInputStream();  //得到网络相应的内容
 
  this.fileSize = conn.getContentLength();// 根据响应获取文件大小   
 
  if (this.fileSize <= 0) { // 获取内容长度为0
     throw new RuntimeException("无法获知文件大小 ");  
  }  
 
  if (is == null) { // 没有下载流    
       throw new RuntimeException("无法获取文件");  
  } 
  //String finema = Environment.getExternalStorageDirectory()+"/ww.jpg";
  //Log.e("path",finema);
  FileOutputStream FOS = new FileOutputStream(fileName); // 创建写入文件内存流,通过此流向目标写文件   
    byte buf[] = new byte[1024];     //开辟缓存,保存文件
  int numread;   
  while ((numread = is.read(buf)) != -1) {
     FOS.write(buf, 0, numread);   //将文件逐 byte写入
  }   
 
  try {  
    is.close();  
  } catch (Exception e) {         
  }      
}

补充说明:1、path处,我最早是直接用的"/sdcard/",但是一直报错java.io.FileNotFoundException:....Read-Only File System,不知为什么。后改为path=Environment.getExternalStorageDirectory()+"/ww.jpg";成功 。

         2、联网要在Mainfest中加权限:<uses-permission android:name="android.permission.INTERNET"></uses-permission>

对SDCARD的操作:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>           

原文地址:https://www.cnblogs.com/wyqfighting/p/2694890.html