- import java.io.*;
- class MyLrcReader{
- public static void main(String[] arg) throws Exception{
- MyLrcReader lrcReader = new MyLrcReader(); //主函数无法调用非静态方法,建立对象来完成调用
- File lrcFile = lrcReader.getLrcPath(); //获取一个正确可用的源文件
- System.out.println("开始读取"+lrcFile.getName());
- BufferedReader fileRead = new BufferedReader(new FileReader(lrcFile));
- String lineLrc =null;
- while ( ( lineLrc= fileRead.readLine() ) !=null){
- System.out.println(lineLrc+"打印于主函数,lrc的length为:"+lineLrc.length());
- lrcReader .Print(lineLrc); //调用打印方法
- }
- System.out.println(lrcFile.getName()+"读取完毕");
- }
- //文件名读取、判断函数
- private File getLrcPath() throws Exception{
- int i = 0;
- File lrcFile = null;
- while( i != 1 ){
- System.out.println("请输入lrc文件的途径,书写必须包含后缀");
- BufferedReader pathInput = new BufferedReader(new InputStreamReader(System.in));
- String lrcPath = pathInput.readLine();
- if (lrcPath.endsWith(".lrc")){
- lrcFile = new File(lrcPath);
- if( ! lrcFile.exists() ){
- System.out.println("文件不存在");
- System.out.println();
- continue ;//文件不存在则提示错误,并再次等待输入
- }
- i = 1;//达到循环终止条件
- }else {
- System.out.println("文件名错误");
- System.out.println();
- }
- }
- return lrcFile;
- }
- //lrc文件输出
- private void Print(String lrc )throws Exception{
- System.out.println(lrc);
- //根据歌词各部分区别,进行不同的切割处理
- if (lrc.startsWith("[ti:") ){
- System.out.println(lrc.substring(4, lrc.length()-1) );
- }else if (lrc.startsWith("[ar:") ){
- System.out.println(lrc.substring(4, lrc.length()-1) );
- }else if (lrc.startsWith("[al:") ){
- System.out.println(lrc.substring(4, lrc.length()-1) );
- }else if (lrc.startsWith("[by:") ){
- System.out.println(lrc.substring(4, lrc.length()-1) );
- }else{
- System.out.println(lrc);
- String[] lrcPart = lrc.split( "\\]" ); //将歌词和时间切割开
- //System.out.println(lrcPart.length);
- //System.out.println(lrcPart[0]);
-
- //获取延迟时间
- String[] timeMsPart = lrcPart[0].split( "." );
- String[] timeSecPart = timeMsPart[0].split( ":" );
- String[] timeMinPart = timeSecPart[0].split( "\\[" );//substring(1, timeSecPart[0].length()-1) ;
- System.out.println(timeMsPart[0]);
- System.out.println(timeSecPart[0]);
- System.out.println(timeMinPart[0]);
- Long time = null;
- time = Long.parseLong(timeMsPart[1])
- +Long.parseLong(timeSecPart[1])*100
- +Long.parseLong(timeMinPart[1])*6000;
- //打印后暂停指定的时间
- System.out.println(lrcPart [1]);
- this.wait(time);
- }
- }
- }
复制代码 读取的文件名为abc.lrc ,内容为:
[ti:Bressanone 布列瑟农]
[ar:马修·连恩]
[al:《狼》]
[by:炫网资讯 Liuxuan.com]
[00:00.00]BRESSANONE 布列瑟农
[00:05.00]歌手:马修·连恩
[00:15.00]译文:我站在布列瑟侬的星空下
[00:19.00]而星星 也在天的另一边照着布列瑟农
哪位能帮分析下,为什么读完“[by:炫网资讯 Liuxuan.com]” 之后再读“[00:00.00]BRESSANONE 布列瑟农 ”就读不出来了,读的是空字符串。。。然后lrc.split( "\\]" ); 完全就是笑话了。。后面全错。。 |