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

发布时间:2019-08-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android实现简单的文件下载与上传脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

文件下载

 /**  * 下载服务 IntentService   * 生命周期:  * 1>当第一次启动IntentService时,AndROId容器  *  将会创建IntentService对象。  * 2>IntentService将会在工作线程中轮循消息队列,  *  执行每个消息对象中的业务逻辑。  * 3>如果消息队列中依然有消息,则继续执行,  *  如果消息队列中的消息已经执行完毕,  *  IntentService将会自动销毁,执行onDestroy方法。  */ public class DownloadService extends IntentService{   PRivate static final int NOTIFICATION_ID = 100;   public DownloadService(){     suPEr("download");   }   public DownloadService(String name) {     super(name);   }   /**    * 该方法中的代码将会在工作线程中执行    * 每当调用startService启动IntentService后,    * IntentService将会把OnHandlerIntent中的    * 业务逻辑放入消息队列等待执行。    * 当工作线程轮循到该消息对象时,将会    * 执行该方法。    */   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);   }     }

文件上传

  /**     * 上传文件     * @param uploaDFile     */    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)+"/r/n";            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();    }  } 

总结

android教程
脚本网站
android studio

脚本宝典总结

以上是脚本宝典为你收集整理的Android实现简单的文件下载与上传全部内容,希望文章能够帮你解决Android实现简单的文件下载与上传所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。