支持H5 Video标签播放,迅雷下载

/**

* 断点续传工具

* @author lxycx_xc

* 时间:2017年11月30日

*/

public class BreakpointResume {

private static Logger log = Logger.getLogger(BreakpointResume.class);

/**下载操作,支持断点续传*/

public static void download(HttpServletRequest req,HttpServletResponse resp,String filepath) throws NumberFormatException, IOException{

//请求头参数

File file = new File(filepath);

Long fileSize = file.length();

Long lasttime = file.lastModified();

Long size = fileSize;

int i = 0;

String range = req.getHeader("Range");

String ifm = req.getHeader("If-Modified-Since");

if(ifm!=null&&Long.parseLong(ifm)

resp.setStatus(304);

}else{

byte[] buff = new byte[524288];//1024*1024/2

RandomAccessFile raf = new RandomAccessFile(file, "rw");

BufferedOutputStream bfo = new BufferedOutputStream(resp.getOutputStream());

try {

if(range!=null){//断点续传请求

size = (long)(5242880);//限制每次视频输出的大小

String[] ranges = range.replace("bytes=", "").split("-");

if(ranges.length<2){//为Content-Range参数做铺垫

ranges = new String[]{ranges[0],"0"};

if(fileSize-Long.parseLong(ranges[0])>size){

ranges[1] = String.valueOf(Long.parseLong(ranges[0])+size);

}else{

ranges[1] = String.valueOf(fileSize-1);

}

}

raf.seek(Long.parseLong(ranges[0]));//从指定位置开始读取

resp.setHeader("Last-Modified", String.valueOf(lasttime));//文件最后修改时间

resp.setHeader("Content-Range", "bytes "+StringUtils.join(ranges, "-")+"/"+fileSize);//请求的数据 开始-结束/文件总大小

resp.setStatus(206);

}

int len = 0;

while((len=raf.read(buff))>0&&i

bfo.write(buff);

bfo.flush();

i+=len;

log.debug("本次输出:"+buff.length);

}

} catch (Exception e) {

log.info("输出流非正常关闭:");

} finally{

raf.close();

bfo.close();

log.info("当前请求共输出:"+i);

}

}

}

}

java log 断点_断点续传JAVA实现相关推荐

  1. java log 断点_项目中常见的log日志调用

    第一种用法:引用org.apache.commons.logging.Log. import org.apache.commons.logging.Log; import org.apache.com ...

  2. java path类_基于java Files类和Paths类的用法(详解)

    Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream; import java.nio.file.FileSystem ...

  3. java 持续交付_【Java架构:持续交付】一篇文章搞掂:Jenkins

    1.1.使用yum安装JDK a.检查系统是否有安装open-jdk rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果没有输入信息表示 ...

  4. java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)

    import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...

  5. java多线程编程_《java多线程编程实战指南》读书笔记 -- 基本概念

    展开 并发:多个线程操作相同资源,保证线程安全,合理使用资源 高并发:服务能同时处理多个请求,提高程序性能 测试上下文切换工具 Lmbench3 测量上下文切换时长 vmstat 测量上下文切换次数 ...

  6. java 新闻编辑_使用 Java 构建你自己的文本编辑器|Linux 中国

    导读:有时候,除你自己外,没有人能制作你所梦想的工具.以下是如何开始构建你自己的文本编辑器. 本文字数:9393,阅读时长大约:12分钟 https://linux.cn/article-13038- ...

  7. java核心教程_核心Java教程

    java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...

  8. java 包命名_【Java】包的命名规则

    命名规范 包:所有单词的字母小写,之后每个单词用-隔开,如 org.nemo.demo 常量:所有单词的字母大写,之后每个单词用_隔开,如 FLAG 类:所有单词的首字母大写,如 TestJava p ...

  9. java 删除语句_是java语句

    <21天学通Java(第7版)>-- 第2章 Java编程基础 2.1 语句和表达式 本节书摘来异步社区<21天学通Java(第7版)>一书中的第2章,第2.1节,作者: [美 ...

  10. java 图片效果_使用Java进行图片底片化效果处理

    使用java代码读取图片,并进行底片化处理 util importjava.awt.image.BufferedImage;importjava.io.File;importjava.util.Arr ...

最新文章

  1. PHP语言 -- 数组
  2. copyproperties爆红_BeanUtils.copyProperties复制失败探究
  3. SAP CRM 和 SAP Cloud for Customer 的表格列项目宽度调整的原理介绍
  4. 修改Linux网卡由eth1变成eth0
  5. hadoop1常见配置含义
  6. git版本回退(3)
  7. Android 四大组件学习之Activity二
  8. 吴恩达机器学习作业2
  9. APP测试和web测试有什么区别?
  10. 蛋白组学质谱检测实验
  11. 计算机桌面ie图标无法删除,桌面IE浏览器图标无法删除怎么办
  12. MATLAB控制有效数字
  13. 防止刷新或后退页面重复提交表单
  14. latex中的表格、图标题引用
  15. 标准分幅地图-选择比例尺
  16. Word快捷键大全 Word2013/2010/2007/2003常用快捷键大全
  17. 笔记本屏幕30hz_扩展显示-(多屏幕)三屏显示方案全攻略
  18. 数据库同步复制|sqlserver同步工具|sqlserver数据库定时同步
  19. 软件产品登记申报需要的材料
  20. 加拿大计算机专业面试,《移民易出国网》成功案例:加拿大技术移民,计算机程序员-30个月单免(免面试)...

热门文章

  1. JavaScript:事件:冒泡和捕获机制
  2. kf.qq.com.lol.html,英雄联盟安全信用星级,英雄联盟封号查询中心
  3. 大数据分析应用的九大领域
  4. 信息服务器在哪里打开,internet信息服务(lls)管理器在哪里打开
  5. Filebeat自定义index和fields
  6. 阿里云部署视频点播:学习文档使用Java程序部署视频点播基础用法之入门
  7. 微信小程序对接串口摄像头
  8. python聊天室socket+tkinter_基于socket和tkinter的python网络聊天室程序
  9. Msql特定业务之自增业务表,适用于根据表去分类管理业务数据
  10. HDS AMS 更换控制器和控制器缓存