栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android实现简单的文件下载与上传

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android实现简单的文件下载与上传

文件下载


public class DownloadService extends IntentService{
  private static final int NOTIFICATION_ID = 100;
  public DownloadService(){
    super("download");
  }
  public DownloadService(String name) {
    super(name);
  }
  
  protected void onHandleIntent(Intent intent) {
    //发送Http请求 执行下载业务
    //1. 获取音乐的路径
    String url=intent.getStringExtra("url");
    String bit=intent.getStringExtra("bit");
    String title=intent.getStringExtra("title");
    //2. 构建File对象,用于保存音乐文件
    //   /mnt/sdcard/Music/_64/歌名.mp3
    File targetFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC),"_"+bit+"/"+title+".mp3" );  
    if(targetFile.exists()){
      Log.i("info", "音乐已存在");
      return;
    }
    if(!targetFile.getParentFile().exists()){
      targetFile.getParentFile().mkdirs();
    }
    try {
      sendNotification("音乐开始下载", "音乐开始下载");
      //3. 发送Http请求,获取InputStream
      InputStream is = HttpUtils.getInputStream(url);
      //4. 边读取边保存到File对象中
      FileOutputStream fos = new FileOutputStream(targetFile);
      byte[] buffer = new byte[1024*100];
      int length=0;
      int current = 0;
      int total = Integer.parseInt(intent.getStringExtra("total"));
      while((length=is.read(buffer)) != -1){
 fos.write(buffer, 0, length);
 fos.flush();
 current += length;
 //通知下载的进度
 double progress = Math.floor(1000.0*current/total)/10;
 sendNotification("音乐开始下载", "下载进度:"+progress+"%");
      }
      //5. 文件下载完成
      fos.close();
      cancelNotification(); //重新出现滚动消息
      sendNotification("音乐下载完成", "音乐下载完毕");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  
  public void sendNotification(String ticker, String text){
    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    Notification.Builder builder = new Notification.Builder(this);
    builder.setSmallIcon(R.drawable.ic_launcher)
      .setContentTitle("音乐下载")
      .setContentText(text)
      .setTicker(ticker);
    Notification n = builder.build();
    manager.notify(NOTIFICATION_ID, n);
  }
  
  public void cancelNotification(){
    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    manager.cancel(NOTIFICATION_ID);
  }    
}

文件上传

  
  private void uploadFile(final File uploadFile) { 
    new Thread(new Runnable() {      
      @Override 
      public void run() { 
 try { 
   uploadbar.setMax((int)uploadFile.length()); 
   String souceid = logService.getBindId(uploadFile); 
   String head = "Content-Length="+ uploadFile.length() + ";filename="+ uploadFile.getName() + ";sourceid="+ 
     (souceid==null? "" : souceid)+"rn"; 
   Socket socket = new Socket("192.168.1.78",7878); 
   OutputStream outStream = socket.getOutputStream(); 
   outStream.write(head.getBytes()); 
   PushbackInputStream inStream = new PushbackInputStream(socket.getInputStream());   
   String response = StreamTool.readLine(inStream); 
   String[] items = response.split(";"); 
   String responseid = items[0].substring(items[0].indexOf("=")+1); 
   String position = items[1].substring(items[1].indexOf("=")+1); 
   if(souceid==null){//代表原来没有上传过此文件,往数据库添加一条绑定记录 
     logService.save(responseid, uploadFile); 
   } 
   RandomAccessFile fileOutStream = new RandomAccessFile(uploadFile, "r"); 
   fileOutStream.seek(Integer.valueOf(position)); 
   byte[] buffer = new byte[1024]; 
   int len = -1; 
   int length = Integer.valueOf(position); 
   while(start&&(len = fileOutStream.read(buffer)) != -1){ 
     outStream.write(buffer, 0, len); 
     length += len; 
     Message msg = new Message(); 
     msg.getData().putInt("size", length); 
     handler.sendMessage(msg); 
   } 
   fileOutStream.close(); 
   outStream.close(); 
   inStream.close(); 
   socket.close(); 
   if(length==uploadFile.length()) logService.delete(uploadFile); 
 } catch (Exception e) { 
   e.printStackTrace(); 
 } 
      } 
    }).start(); 
  } 
} 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对考高分网的支持。如果你想了解更多相关内容请查看下面相关链接

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/155161.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号