时间:2021-05-20
文件下载
/** * 下载服务 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(); } }总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了phpftp文件上传与下载的具体代码,供大家参考,具体内容如下ftp文件上传php自带有ftp操作的函数包,一个比较简单实现的ftp文件上传
在Web应用程序开发中,文件上传与下载功能是非常常用的功能,下面通过本文给大家介绍JavaWeb实现文件上传与下载实例详解。对于文件上传,浏览器在上传的过程中是
本篇主要介绍下文件的上传与下载。分享给大家,具体如下:文件上传下载也是系统中常用的功能,不啰嗦,直接上代码看下具体的实现。文件上传.netcore通过IForm
phpajax无刷新上传图片与图片下载功能的实现代码如下所示:指定文件名:上传文件:functiondoUpload(){varformData=newForm
一、Socketserver实现FTP,文件上传、下载 目录结构 1、socketserver实现ftp文件上传下载,可以同时多用户登录、上传、下载