酷狗的krc歌词文件的解析
2014-06-12 11:54
489 查看
酷狗的krc歌词文件的解析,弄了很久才知道krc文件是加密的,需要转成utf-8,解密,再转ASCII码显示,别人说的,后来找了好久代码,终于找到完整的。
就是两个类
就是两个类
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.Deflater; import java.util.zip.DeflaterOutputStream; import java.util.zip.Inflater; import java.util.zip.InflaterInputStream; public abstract class ZLibUtils { public static byte[] compress(byte[] data) { byte[] output = new byte[0]; Deflater compresser = new Deflater(); compresser.reset(); compresser.setInput(data); compresser.finish(); ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length); try { byte[] buf = new byte[1024]; while (!compresser.finished()) { int i = compresser.deflate(buf); bos.write(buf, 0, i); } output = bos.toByteArray(); } catch (Exception e) { output = data; e.printStackTrace(); } finally { try { bos.close(); } catch (IOException e) { e.printStackTrace(); } } compresser.end(); return output; } public static void compress(byte[] data, OutputStream os) { DeflaterOutputStream dos = new DeflaterOutputStream(os); try { dos.write(data, 0, data.length); dos.finish(); dos.flush(); } catch (IOException e) { e.printStackTrace(); } } public static byte[] decompress(byte[] data) { byte[] output = new byte[0]; Inflater decompresser = new Inflater(); decompresser.reset(); decompresser.setInput(data); ByteArrayOutputStream o = new ByteArrayOutputStream(data.length); try { byte[] buf = new byte[1024]; while (!decompresser.finished()) { int i = decompresser.inflate(buf); o.write(buf, 0, i); } output = o.toByteArray(); } catch (Exception e) { output = data; e.printStackTrace(); } finally { try { o.close(); } catch (IOException e) { e.printStackTrace(); } } decompresser.end(); return output; } public static byte[] decompress(InputStream is) { InflaterInputStream iis = new InflaterInputStream(is); ByteArrayOutputStream o = new ByteArrayOutputStream(1024); try { int i = 1024; byte[] buf = new byte[i]; while ((i = iis.read(buf, 0, i)) > 0) { o.write(buf, 0, i); } } catch (IOException e) { e.printStackTrace(); } return o.toByteArray(); } }
import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class KrcText { private static final char[] miarry = { '@', 'G', 'a', 'w', '^', '2', 't', 'G', 'Q', '6', '1', '-', 'Î', 'Ò', 'n', 'i' }; public static void main(String[] args) throws IOException { String filenm = "";//krc文件的全路径加文件名 System.out.println(new KrcText().getKrcText(filenm)); } /** * * @param filenm krc文件路径加文件名 * @return krc文件处理后的文本 * @throws IOException */ public String getKrcText(String filenm) throws IOException { File krcfile = new File(filenm); byte[] zip_byte = new byte[(int) krcfile.length()]; FileInputStream fileinstrm = new FileInputStream(krcfile); byte[] top = new byte[4]; fileinstrm.read(top); fileinstrm.read(zip_byte); int j = zip_byte.length; for (int k = 0; k < j; k++) { int l = k % 16; int tmp67_65 = k; byte[] tmp67_64 = zip_byte; tmp67_64[tmp67_65] = (byte) (tmp67_64[tmp67_65] ^ miarry[l]); } String krc_text = new String(ZLibUtils.decompress(zip_byte), "utf-8"); return krc_text; } }
相关文章推荐
- krc歌词文件解析
- 酷狗.Krc加密歌词解析
- 将酷狗krc歌词解析并转换为lrc歌词php源码
- 将酷狗krc歌词解析并转换为lrc歌词php源码
- 酷狗 KRC 文件的解析
- C语言 解析lrc歌词文件
- 自定义View强势来袭,用自定义View实现歌词显示控件上篇之实现歌词文件解析
- Java使用正则表达式解析LRC歌词文件
- 歌词文件lrc的解析类(目前在WINCE下使用)
- 浅谈歌词文件(LRC、QRC、KRC)
- C语言 LRC歌词文件解析
- ios开发学习- 简易音乐播放器2 (基于iPhone4s屏幕尺寸)-- 歌词解析--plist文件应用--imageNamed图片加载耗内存
- ios开发学习--歌词处理--解析lrc文件
- 自定义view解析歌词文件并同步显示
- 歌词文件LRC的解析,可用于音乐播放器实现歌词同步操作
- 笨笨-歌词伴侣V1.2(酷狗KRC转LRC,LRC歌词批量下载)
- 笨笨-歌词伴侣V1.2(酷狗KRC转LRC,LRC歌词批量下载)
- android开发--mp3播放器项目源代码(xml文件解析,.lrc,.mp3文件下载,同时显示歌词)
- C语言 解析lrc歌词文件
- MP3制作之LRC歌词文件解析(附:源代码)