package cn.bingoogolapple.media.util; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import cn.bingoogolapple.media.model.Lyric; /** * 作者:王浩 邮件:bingoogolapple@gmail.com * 创建时间:15/9/23 下午11:53 * 描述: */ public class LyricParser { public static ArrayList<Lyric> parseLyricFromFile(File lyricFile) { if (lyricFile == null || !lyricFile.exists()){ return null; } ArrayList<Lyric> list = new ArrayList<>(); try { //1.获取每一行文本内容 BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(lyricFile), "gbk")); String line; while ((line = reader.readLine()) != null) { //2.将每行歌词内容转为lyric对象 //[00:07.33][00:02.00]听个工人说 -split("]") //[00:07.33 [00:02.00 听个工人说 String[] arr = line.split("\\]"); for (int i = 0; i < arr.length - 1; i++) { Lyric lyric = new Lyric(); lyric.content = arr[arr.length - 1]; lyric.startPoint = formatLyricStartPoint(arr[i]); list.add(lyric); } } //3.对歌词进行排序 Collections.sort(list); } catch (IOException e) { e.printStackTrace(); } return list; } /** * 将[00:07.33转为long * * @param startPoint * @return */ private static long formatLyricStartPoint(String startPoint) { startPoint = startPoint.substring(1); //split(":") - > 00 07.33 String[] arr = startPoint.split("\\:"); String[] arr2 = arr[1].split("\\."); int minute = Integer.parseInt(arr[0]); int second = Integer.parseInt(arr2[0]); int mills = Integer.parseInt(arr2[1]); return minute * 60 * 1000 + second * 1000 + mills * 10; } }