//目录结构
//来看一下歌词内容
[00:00.00]领袖音乐分享平台 http://www.kugou.com
[00:02.31]Pretty boy-M2M 英俊男孩 JY93653制作
[00:25.26]I lie awake at night
[00:30.54]See things in black and white
[00:36.06]I ve only got you inside my mind
[00:41.40]You know you have made me blind
还有很多,这里就不贴出来了,占位置
//解析出歌词时间和内容
public static void parserLrc1() throws IOException
{
//通过类加载来到得本地根目录下面的01.lrc文件的inputStream
InputStream inStreams=Test.class.getClassLoader().getResourceAsStream("01.lrc");
//通过InputStreamReader和BufferedReader来配合
//这里使用BufferedReader提供了很的方便,因为BufferedReader是一行一行的读的。
InputStreamReader inReader=new InputStreamReader(inStreams);
BufferedReader readered=new BufferedReader(inReader);
//构建正则表达式,这里的值是构建取得[00:00.00]的内容
Pattern pattern=Pattern.compile("\\[([^\\]]+)\\]");
//定义匹配值
String matcherValue=null;
while((matcherValue=readered.readLine())!=null)
{
//开始匹配
Matcher matcher=pattern.matcher(matcherValue);
//也许整个字符串匹配不到想要的值,所以向下寻找,看是否还有匹配的值
if(matcher.find())
{
//取出这个所匹配得到的值(时间)
String time=matcher.group();
//取出歌词内容,重第10个开始
String lrc=matcherValue.substring(10);
//输出内容看一下
System.out.println(time+"----"+lrc);
/**
* 注意,但这样也许不是我们要的效果
* 我们肯定想,拿到这个时间的豪秒数
* 好在程序中加以控制整个歌词的显示
* 见parserLrc2()方法
*/
}
}
}
看下结果。。。。。
//下面我们来看一下,稍微复杂点的,解析歌词时间和内容,并且放到队列中
//解析歌词时间和内容,并且放到队列中
public static ArrayList parserLrc2() throws IOException
{
//根据队列先进先出的原理,放歌词再合适不过了
Queue queue_time=new LinkedList();
Queue queue_cnotallow=new LinkedList();
//再弄个ArrayList来保存队列,方便传输
ArrayList queue_timeandlrc_Cnotallow=new ArrayList();
InputStream inStreams=Test.class.getClassLoader().getResourceAsStream("01.lrc");
InputStreamReader inReader=new InputStreamReader(inStreams);
BufferedReader readered=new BufferedReader(inReader);
//构建正则表达式,这里的值是构建取得[00:12.34]的内容
Pattern pattern=Pattern.compile("\\[([^\\]]+)\\]");
//定义匹配值
String matcherValue=null;
while((matcherValue=readered.readLine())!=null)
{
//开始匹配
Matcher matcher=pattern.matcher(matcherValue);
//也许整个字符串匹配不到想要的值,所以向下寻找,看是否还有匹配的值
if(matcher.find())
{
//取出这个所匹配得到的值(时间)
String time=matcher.group();
//增加内容如下\\\\\\\\\\\\\\\\\\\\
//得到总秒数,把时间拿出来通过正则在分解
long millisecnotallow=getMillSecond(time.substring(1,time.length()-1));
//取出歌词内容,重第10个开始
String lrc=matcherValue.substring(10);
//放入队列
queue_time.offer(millisecond);
queue_content.offer(lrc);
//放入ArrayList
queue_timeandlrc_Content.add(queue_time);
queue_timeandlrc_Content.add(queue_content);
}
}
//返回
return queue_timeandlrc_Content;
}
//把得到的00:12.34再进行分解
public static long getMillSecond(String milli)
{
// 分 秒和毫秒
//把00:12.34拆分成new String[]{00,12.34}
String split_minute[]=milli.split(":");
//但我们只需要得到分钟,所以得把分钟给拿出来,也就是第0个元素
long minute=Integer.parseInt(split_minute[0]);
//现在要拿到秒数,也就是第1个元素再进行分解
String split_second[]=split_minute[1].split("\\.");
//这样我们就又拿到了秒
long secnotallow=Integer.parseInt(split_second[0]);
//拿到了毫秒
long millsecnotallow=Integer.parseInt(split_second[1]);
//返回总毫秒数
return minute*60*1000+second*1000+millsecond;
}
//执行,拿出Queue里面的结果
public static void main(String[] args) throws Exception
{
ArrayList lrcandtime_Cnotallow=parserLrc2();
Queue time=lrcandtime_Content.get(0);
Queue lrc=lrcandtime_Content.get(1);
System.out.println(time.poll()+""+lrc.poll());
Iterator lrc_time=time.iterator();
Iterator lrc_cnotallow=lrc.iterator();
while(lrc_time.hasNext() && lrc_content.hasNext())
{
System.out.println(lrc_time.next()+":"+lrc_content.next());
}
}
//结果