字幕文件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)
上一篇 2025年8月23日 下午6:15
下一篇 2025年8月23日 下午6:43


相关推荐

  • 我如何为 OpenClaw 构建了一个自动学习技能

    我如何为 OpenClaw 构建了一个自动学习技能

    2026年3月13日
    2
  • rabbitmq集群搭建_mongodb集群搭建

    rabbitmq集群搭建_mongodb集群搭建先来介绍一下RabbitMQ集群RabbitMQ集群有两种模式,一种是普通模式,即默认的集群模式,另外一种为镜像模式,可以把队列做成镜像队列我们在学习两种模式之前,先来了解下一些关于RabbitMQ集群的概念元数据:包括队列元数据,交换器元数据,交换器元数据,vhost元数据(1)队列元数据:队列名称和它的属性;(2)交换器元数据:交换器名称、类型和属性;(3)绑定元数据:一张简…

    2025年9月5日
    9
  • bWAPP练习

    bWAPP练习简介虚拟机下载地址: https://www.vulnhub.com/entry/bwapp-bee-box-v16,53/如果你想自己去部署环境:https://sourceforge.net/projects/bwapp/files/bee-box/bWAPP包含有100多个漏洞,包括OWASPTop10安全风险,很爽的PHPweb靶机。登录username:bee pas…

    2026年2月26日
    4
  • Lnmp修改php.ini配置

    Lnmp修改php.ini配置

    2021年10月9日
    41
  • git如何退出vim_git提交的命令

    git如何退出vim_git提交的命令有很多方法:退出Vi当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一。在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出,返回到shell。在末行模式下,输入命令:wVi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用

    2022年8月24日
    8
  • openssl安装教程(windows7系统,超详细)

    openssl安装教程1.安装包安装1.1所需资源链接1.2安装流程1.3测试是否安装成功1.4安装过程中的问题2.自己编译源码再安装1.安装包安装1.1所需资源链接openssl安装包下载地址:http://slproweb.com/products/Win32OpenSSL.html如果用谷歌浏览器打开的话,可以翻译成中文:对应英文如下:根据自己电脑的配置选择需要的版本,我这里选择的第1个Win64OpenSSLv1.1.1iLight。1.2安装流程下载好之后,直接双击即

    2022年4月11日
    2.8K

发表回复

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

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