字幕文件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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Hutools工具类介绍(java )「建议收藏」

    Hutools工具类介绍(java )「建议收藏」原网址:https://hutool.cn/docs/#/Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让J

    2022年8月4日
    7
  • csgo开箱网站都有哪些_csgo官方承认的开箱网站

    csgo开箱网站都有哪些_csgo官方承认的开箱网站csgo开箱网站有哪些?csgo开箱网站大全以下国内知名CSGO开箱网站网站状态优惠码/推广码官网直达链接直接取回csgogoincsgo直接取回csgogoskinsdog直接取回csgo88hash直接取回csgogoskskins直接取回csgofateskins可取回暂无yskins直接取回csgocoolkaixiang可取回csgogopiggycase以下国外知名CSGO开箱网站

    2022年10月6日
    2
  • eigen库的使用_vcg库

    eigen库的使用_vcg库Eigen矩阵定义#includeMatrixdouble,3,3>A;//Fixedrowsandcols.SameasMatrix3d.Matrixdouble,3,Dynamic>B;//Fixedrows,dynamiccols.Matrixdouble,Dynamic,Dynam

    2022年10月7日
    3
  • CPU流水线技术演进「建议收藏」

    CPU流水线技术演进「建议收藏」一.三级线性流水线每个流水级的结构是:逻辑电路+寄存器我们可以将流水线往下细分,使得各个流水级足够小(CPU执行时间少),就可以通过提高系统时钟频率来提高CPU的处理速度。二.多级线性流水线(这里以5级为例)注意:我们把5级以上的流水线称为超流水线结构。三.muti-多级线性流水线(这里以5级为例)四.多级非线性流水线(乱序执行部件)五.超线程处理器多级非线性流水线(虚拟处理器共用乱序执行部件)拥有超线程的处理器将两个虚拟的处理器暴露给共享的乱..

    2022年8月20日
    5
  • 静态变量与动态变量

    静态变量与动态变量0.静态存储与动态存储1)静态存储变量通常是在变量定义时就分定存储单元并一直保持不变,直至整个程序结束。静态变量,全局动态变量都是静态存储2)动态存储变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放3)静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。通常把由于变量存储方式不同而产生的特性称为变量的生存期4)静态存储只会初始化一次 摘自于:百度百科…

    2022年5月25日
    29
  • 查看CentOS的系统版本[通俗易懂]

    查看CentOS的系统版本[通俗易懂]记录一下以免忘记:CentOS查看版本有如下:cat/etc/redhat-releaseuname-acat/etc/issue#这个好像7以上看不了cat/proc/version#这个是和内核有关的数据getconfLONG_BITorgetconfWORD_BIT#查看版本位数是64位还是32位…

    2022年6月24日
    26

发表回复

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

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