Java实现剪切MP3格式的文件_java_java实现酷狗音乐临时缓存文件转换为MP3文件的方法,本文实例讲述了java实现酷狗音 - phpStudy...

java实现酷狗音乐临时缓存文件转换为MP3文件的方法

本文实例讲述了java实现酷狗音乐临时缓存文件转换为MP3文件的方法。分享给大家供大家参考,具体如下:

酷狗临时缓存文件,其实已经是吧MP3文件下载好了,只是名字看上去好像是通过md5算法重命名的。

酷狗在缓存文件的时候会同时缓存歌词。这个程序就是根据md5管理对应的歌词文件和缓存文件,然后把缓存文件改成 歌曲名+.mp3格式。

原谅我取这么长也不知道对不对的类名。

package com.zhou.run;

import java.io.File;

import java.util.HashMap;

import java.util.Map;

public class KugouTempFileToMp3AndModifyNameToTrueName {

public static String KGTEMP = ".kgtemp";

public static String KRC = "krc";

public void Change(String tempPath, String krcPath) {

File temp = new File(tempPath);

File krc = new File(krcPath);

if (temp.exists() && temp.getName().endsWith(KGTEMP)) {

String filename = temp.getName();

String filemd5 = filename

.substring(0, filename.lastIndexOf(KGTEMP));

if (!krc.exists())

return;

String krcname = krc.getName();

String krcmd5 = krcname.substring(krcname.lastIndexOf("-") + 1,

krcname.lastIndexOf(KRC) - 1);

String mp3name = krcname.substring(0, krcname.lastIndexOf("-"));

if (krcmd5.equals(filemd5)) {

String path = temp.getPath().substring(0,

temp.getPath().lastIndexOf("\\"));

File mp3File = new File(path + "\\" + mp3name + ".mp3");

temp.renameTo(mp3File);

}

System.out.println(filename + " " + filemd5);

System.out.println(krcname + " " + mp3name + " " + krcmd5);

}

}

public void ChangeByDir(String tempPath,String krcPath){

Map temps = fileMd5Map(tempPath);

Map mp3Names = krcNameMd5Map(krcPath);

for(String key :temps.keySet()){

File f = temps.get(key);

if(f.exists()){

String path = f.getPath().substring(0,

f.getPath().lastIndexOf("\\"));

String mp3Name = mp3Names.get(key);

File mp3File = new File(path + "\\" + mp3Name + ".mp3");

if(f.renameTo(mp3File)){

System.out.println(f.getName()+" to "+mp3File.getName());

System.err.print(" SUCCESS");

}

}

}

}

public Map fileMd5Map(String path) {

File dirFile = new File(path);

Map map = null;

if (dirFile.isDirectory()) {

map = new HashMap();

for (File f : dirFile.listFiles()) {

if (f.exists()&&f.isFile()&& f.getName().endsWith(KGTEMP)) {

String filename = f.getName();

String filemd5 = filename.substring(0,

filename.lastIndexOf(KGTEMP));

map.put(filemd5, f);

}

}

}

return map;

}

public Map krcNameMd5Map(String path){

File dirFile = new File(path);

Map map = null;

if (dirFile.isDirectory()) {

map = new HashMap();

for (File f : dirFile.listFiles()) {

if (f.exists()&&f.isFile()&& f.getName().endsWith(KRC)) {

String krcname = f.getName();

if(!krcname.contains("-"))continue;

String krcmd5 = krcname.substring(krcname.lastIndexOf("-") + 1,

krcname.lastIndexOf(KRC) - 1);

String mp3name = krcname.substring(0, krcname.lastIndexOf("-"));

map.put(krcmd5, mp3name);

}

}

}

return map;

}

}

public static void main(String[] args) {

KugouTempFileToMp3AndModifyNameToTrueName ktf = new KugouTempFileToMp3AndModifyNameToTrueName();

/*String tempPath = "D:/KuGou/mp3/2fad259e357078e89404be12e1fd7ae3.kgtemp";

String krcPath ="D:/KuGou/Lyric/周杰伦、袁咏琳 - 怎么了-2fad259e357078e89404be12e1fd7ae3.krc";

ktf.Change(tempPath,krcPath);*/

String tempDir ="D:/KuGou/mp3";

String krcDir="D:/KuGou/Lyric";

ktf.ChangeByDir(tempDir, krcDir);

}

Change(string,string) 方法只是用来测试用的。调一下字符串之类的

主要使用ChangeByDir方法,参数是临时文件的文件夹和歌词文件的文件夹

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。相关阅读:

jquery $("#variable") 循环改变variable的值示例

adnroid已安装应用中检测某应用是否安装的代码实例

C#实现过滤html标签并保留a标签的方法

基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架

Android传递Bitmap对象在两个Activity之间

php xml常用函数的集合(比较详细)

CentOS 分区方案

XP可以升级win10正式版吗?XP系统升级win10正式版的方法

JS 在指定数组中随机取出N个不重复的数据

使用C语言解决字符串全排列问题

PHP图片处理之图片旋转和图片翻转实例

Asp.Net FckEditor在web.config中配置的具体实例

jQuery性能优化技巧分析

.net生成缩略图及水印图片时出现GDI+中发生一般性错误解决方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值