歌词格式转化,trc转lrc

trc和lrc都是文本格式,不同的是trc中有<150><***>把歌词分隔开了。

package com.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Turn {
	
		/**
		 * 递归获取文件夹下所有文件
		 * @param path
		 * @return
		 */
	public static List<File> files=new ArrayList<File>();
		
	public static List<File> getFiles(String path) {
	    	//获取文件位置
	        File file = new File(path);
	        //获取文件数组
	        File[] array = file.listFiles();

	        for (int i = 0; i < array.length; i++) {
	            if (array[i].isFile()) {
	            	//保存到集合中
	            	files.add(array[i]);
	            	
	            } else if (array[i].isDirectory()) {
	                 getFiles(array[i].getPath());
	            }
	           
	        }
	        return files;
	    }
	    
	    
	    /**
	     * 读取文件
	     * @param fileName
	     * @return
	     */
	    
	 public static String readFileContent(String fileName) {
	        File file = new File(fileName);
	        BufferedReader reader = null;
	        StringBuffer sbf = new StringBuffer();
	        try {
	            reader = new BufferedReader(new FileReader(file));
	            String tempStr;
	            while ((tempStr = reader.readLine()) != null) {
	                sbf.append(tempStr+"\r\n");
	            }
	            reader.close();
	            return sbf.toString();
	        } catch (IOException e) {
	            e.printStackTrace();
	        } finally {
	            if (reader != null) {
	                try {
	                    reader.close();
	                } catch (IOException e1) {
	                    e1.printStackTrace();
	                }
	            }
	        }
	        return sbf.toString();
	    }
	    
	    
	    /**
	     * @写入文件
	     * @param fileName 文件名
	     * @param newPath 输出路径
	     *@param file1  输出内容
	     */
	    public static boolean writeFileContent(String fileName,String newPath,String file1){
	    	
	    	boolean pd=true;
	    			
	    	try{
	    		File file =new File(newPath+"/"+fileName+".lrc");
	    		Writer out =new FileWriter(file);
	    		out.write(file1);
	    		out.close();
	  
	        } catch (Exception e) {
	        	pd=false;
	            e.printStackTrace();  
	        }
			return pd; 
	    } 
	    
	    	
	   }


package com.util;

import java.io.File;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Servce {
	
	public static boolean ioUtil(String path,String newPath){
		
		//获取每个文件
		List<File> files = Turn.getFiles(path);
		
		//文件内容
		String file1=null;
		boolean pd=false;
		
		
		int i=0;
		for (; i < files.size(); i++) {
			
			//files.get(i).toString()//获取全路径
			//files.get(i).getName();//获取文件名
			
			System.out.println((i+1)+":"+files.get(i).getName());
			
			//读取文件
			file1 = Turn.readFileContent(files.get(i).toString());
			System.out.println("正在读取:/n"+file1);
			
			//匹配<***> 例如:<151> 的规则
	        Pattern pattern = Pattern.compile("<(.*?)>");
	        Matcher matcher = pattern.matcher(file1);
	        
	        while(matcher.find()){
//	            System.out.println(matcher.group(1));
//	            System.out.println(file1.replace("<"+matcher.group(1)+">", ""));
	        	
	        	//提取<***>
	        	//System.out.println(matcher.group());
	        	//把<***>替换为空字符串
 		        file1=file1.replace(matcher.group(), "");
	        }
	        
	        //System.out.println(file1);
	        
	        //获取文件名,ti
	    	/**
			 * 获取文件标题==文件名
			 */
	        Pattern pattern2 = Pattern.compile("(\\[[^\\]]*\\])");
	        Matcher matcher2 = pattern2.matcher(file1);
	        String name=null;
	        
	        int t=0;
	        while(matcher2.find()){
	        	t++;
	        	if(t<2){
	        		name=matcher2.group(1);
	        	}
	        }
	        name=name.replace("[ti:", "");
//	        name=name.replace("[ar:", "");
//	        name=name.replace("[al:", "");
	        name=name.replace("]", "");
	        
	        
	        //写入文件。
	        Turn.writeFileContent(name, newPath, file1);
	        
	        pd=true;
			
		}
		
		System.out.println("一共有 "+i+" 个文件");
		
		return pd;
		
	}
	
	

}



package com.util;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
	public static void main(String[] args) {
		
		//获取基础信息
		Scanner s=new Scanner(System.in);
		System.out.println("请输入读取文件夹的路径");
		String path = s.next();
		System.out.println("请输入输出的目标路径");
		String newPath = s.next(); 
		
		System.out.println(Servce.ioUtil(path,newPath)==true?"转换成功":"转换失败");
		
		
		
	}
	
}




trc歌词格式:

[ti:回到未来]
[ar:T-T / 卓卓]
[al:夜行动物园]
[ly:T-T / 卓卓]
[mu:T-T / 卓卓]
[ma:顺德]
[pu:]
[by:ttpod]
[total:134976]
[offset:0]
[00:00.264]<203>回<151>到<150>未<152>来 <151>- <151>T-T / 卓卓
[00:01.222]<163>作<143>词<151>:<201>T-T <152>/ <151>卓<150>卓
[00:02.333]<151>作<151>曲<151>:<151>T-T <152>/ <150>卓<154>卓
[00:03.393]<150>编<151>曲<203>:<151>顺<201>德
[00:10.112]<151>我<151>上<151>课<150>趴<150>在<151>桌<302>上
[00:11.318]<152>用<151>耳<202>机<150>偷<152>偷<150>播<251>放
[00:12.526]<150>那<151>时<150>我<151>觉<150>得<153>超<252>酷
[00:13.683]<150>不<151>懂<151>说<152>唱<201>的<201>多<406>样
[00:15.095]<152>凡<201>事<151>总<152>想<202>试<151>试<303>看<151>便<151>开<151>始<150>自<201>己<504>写
[00:17.715]<153>后<201>知<151>后<100>觉<201>越<152>陷<151>越<152>深<153>开<151>始<200>熬<254>起<503>夜
[00:20.237]<153>于<152>是<151>又<101>多<150>了<201>一<151>个<151>秘<152>密
[00:21.471]<149>课<150>堂<150>上<151>少<100>了<151>一<101>丝<150>力<151>气
[00:22.724]<151>把<100>自<152>己<150>锁<101>房<152>间<150>密<100>闭<151>押<151>韵<150>在<152>心<151>里
[00:24.535]<100>刻<151>下<152>了<100>印<151>记


lrc歌词格式

- [ti:回到未来]
[ar:T-T / 卓卓]
[al:夜行动物园]
[ly:T-T / 卓卓]
[mu:T-T / 卓卓]
[ma:顺德]
[pu:]
[by:ttpod]
[total:134976]
[offset:0]
[00:00.264]回到未来 - T-T / 卓卓
[00:01.222]作词:T-T / 卓卓
[00:02.333]作曲:T-T / 卓卓
[00:03.393]编曲:顺德
[00:10.112]我上课趴在桌上
[00:11.318]用耳机偷偷播放
[00:12.526]那时我觉得超酷
[00:13.683]不懂说唱的多样
[00:15.095]凡事总想试试看便开始自己写
[00:17.715]后知后觉越陷越深开始熬起夜
[00:20.237]于是又多了一个秘密
[00:21.471]课堂上少了一丝力气
[00:22.724]把自己锁房间密闭押韵在心里
[00:24.535]刻下了印记

你可能感兴趣的:(歌词格式转化,trc转lrc)