字幕文件srt格式解析

字幕文件srt格式解析解析srt文件,封装为list返回首先新建个class,表示单个字幕数据的实体类publicclassSrtEntity{/***字幕序号*/publicintnumber;/***开始时间*/publicStringbg;/***结束时间*/publicStringed;/***字幕内容*/publ

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

解析srt文件,封装为list返回

  1. 首先新建个class,表示单个字幕数据的实体类
public class SrtEntity { 
   
    /** * 字幕序号 */
    public int number;
    /** * 开始时间 */
    public String bg;
    /** * 结束时间 */
    public String ed;
    /** * 字幕内容 */
    public String content;

    public int getNumber() { 
   
        return number;
    }

    public void setNumber(int number) { 
   
        this.number = number;
    }

    public String getBg() { 
   
        return bg;
    }

    public void setBg(String bg) { 
   
        this.bg = bg;
    }

    public String getEd() { 
   
        return ed;
    }

    public void setEd(String ed) { 
   
        this.ed = ed;
    }

    public String getContent() { 
   
        return content;
    }

    public void setContent(String content) { 
   
        this.content = content;
    }
}

Jetbrains全家桶1年46,售后保障稳定

2.编写srt转list的方法

	/** * 解析srt文件,封装为list并返回 * @param srtPath */
    public List<SrtEntity> getSrtInfoList(String srtPath){ 
   

        List<SrtEntity> srtList = new ArrayList<>();

        try { 
   

            InputStreamReader read = new InputStreamReader(new FileInputStream(srtPath), "utf-8");

            BufferedReader bufferedReader = new BufferedReader(read);

            String lineTxt;

            int index = 0;

            SrtEntity entity = new SrtEntity();

            while ((lineTxt = bufferedReader.readLine()) != null){ 
   
                index ++;
                switch (index % 4){ 
   
                    case 1 :
                        entity.setNumber(Integer.parseInt(lineTxt));
                        break;
                    case 2 :
                        String[] timeArray = lineTxt.split(" --> ");
                        entity.setBg(timeArray[0]);
                        entity.setEd(timeArray[1]);
                        break;
                    case 3 :
                        entity.setContent(lineTxt);
                        break;
                    case 0 :
                        srtList.add(entity);
                        entity = new SrtEntity();
                        break;
                }
            }

        } catch (UnsupportedEncodingException e) { 
   
            e.printStackTrace();
        } catch (FileNotFoundException e) { 
   
            e.printStackTrace();
        } catch (IOException e) { 
   
            e.printStackTrace();
        }

        return srtList;
    }

3.测试方法

public static void main(String[] args) { 
   

        long begin = System.currentTimeMillis();

        FileOperateServiceImpl impl = new FileOperateServiceImpl();
        // 解析srt获取list
        List<SrtEntity> list = impl.getSrtInfoList("E:\\111.srt");
        long end = System.currentTimeMillis();
        System.out.println(end - begin);
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200678.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • acwing-1172. 祖孙询问(最近公共祖先)「建议收藏」

    acwing-1172. 祖孙询问(最近公共祖先)「建议收藏」原题链接给定一棵包含 n 个节点的有根无向树,节点编号互不相同,但不一定是 1∼n。有 m 个询问,每个询问给出了一对节点的编号 x 和 y,询问 x 与 y 的祖孙关系。输入格式输入第一行包括一个整数 表示节点个数;接下来 n 行每行一对整数 a 和 b,表示 a 和 b 之间有一条无向边。如果 b 是 −1,那么 a 就是树的根;第 n+2 行是一个整数 m 表示询问个数;接下来 m 行,每行两个不同的正整数 x 和 y,表示一个询问。输出格式对于每一个询问,若 x 是 y 的祖先则输

    2022年8月9日
  • DropDownList1.SelectedIndex及DropDownList1.SelectedValue的赋值[通俗易懂]

    DropDownList1.SelectedIndex及DropDownList1.SelectedValue的赋值[通俗易懂]困扰好长时间的一个问题,理解之后发现这么简单我定义了一个DropDownList绑定了一个数据表,里面没有静态数据,我想让它编辑的时候传值过来选定要编辑那项,上网找了好多方法,可怎么也不能实现,后来查了SelectedValue的定义。publicvirtualstringSelectedValue{     get     {           intnum1=this.SelectedIndex;           if(num1>=0)           {     

    2022年7月18日
  • 推荐一个shell语法在线检查网站,也可以学习shell语法

    推荐一个shell语法在线检查网站,也可以学习shell语法https://www.shellcheck.net

    2022年7月13日
  • Java Stringbuilder简单介绍

    Java Stringbuilder简单介绍程序开发过程中,我们常常碰到字符串连接的情况,方便和直接的方式是通过”+”符号来实现,但是这种方式达到目的的效率比较低,且每执行一次都会创建一个String对象,即耗时,又浪费空间。使用StringBuilder类就可以避免这种问题的发生,下面就Stringbuilder的使用做个简要的总结:一、创建Stringbuilder对象StringBuilderstrB=newStringBuilder();1、append(Stringstr)/append(Charc):字符串连接Syst

    2022年6月28日
  • java获取服务器路径和类加载路径

    java获取服务器路径和类加载路径publicvoiduploadPic(HttpServletRequestrequest){ int[]ports=newint[3]; ports[0]=request.getServerPort();//获取服务器端口 ports[1]=request.getLocalPort();//获取本地端口 ports[2]=request….

    2022年7月11日
  • simsun是什么字体怎样改成中文_ttf 宋体

    simsun是什么字体怎样改成中文_ttf 宋体华文细黑:STHeitiLight[STXihei]华文黑体:STHeiti华文楷体:STKaiti华文宋体:STSong华文仿宋:STFangsong俪黑Pro:LiHeiProMediu

    2022年8月1日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号