java读取一段缓存音频文件夹_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程序设计有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java aspectj_AspectJ基本用法

AOP虽然是方法论,但就好像OOP中的Java一样,一些先行者也开发了一套语言来支持AOP。目前用得比较火的就是AspectJ了,它是一种几乎和Java完全一样的语言,而且完全兼容Java(AspectJ应该就是一种扩展Java,但它不是像Groovy…

php连接数据库返回数据类型,php从数据库读取数据,并以json格式返回数据的方法...

php中,从数据库读取数据,并以json格式返回数据。具体方法如下:第一步,定义相关变量$servername "localhost";$username "root";$password "root";$mysqlname "datatest";$json ;$da…

php json to object,PHP JSON_FORCE_OBJECT函数实现强转对象

JSON_FORCE_OBJECT在多级数组中,JSON_FORCE_OBJECT会将所有嵌套数值数组编码为对象。如果你只关注第一级数组(例如,使其适合作为MySQL JSON列),那么可以将第一级数组强制转换为对象,例如:$ json json_encode((object)…

php推送示例wordpress,给WordPress的编辑后台添加提示框的代码实例分享

WordPress 3.5 新添加了一个提示框功能,可以创建一个提示框,然后指向任何元素,比如下边的例子:本文就来教你怎么创建一个这样的提示框。首先需要添加提示框的脚本,这样才能使用提示框的 JS 方法。//挂载提示框脚本func…

php 去除标签内样式,PHP去除html标签,php标记及css样式代码参考

语法: string strip_tags(string str);传回值: 字串函式种类: 资料处理解析:本函式可去掉字串中包含的任何 HTML 及 PHP 的标记字串。若是字串的 HTML 及 PHP 标签原来就有错,例如少了大于的符号,则也会传回错误。而本函式和 fgetss() 有着相…

jmeter php网站,jmeter实战之phpwind随机回帖/发帖

关键词:jmeter phpwind 性能测试一、性能需求1)性能需求:30min内,phpwind随机回帖/发帖,观察服务器性能的表现。2)需求分析:2.1 核心业务论坛系统的核心业务主要是登录、看帖、发帖、回帖,业务建模时应考虑…

restful api php,RestfulAPI · ThinkPHP6.0接口开发与应用及uniapp快速入门(更新完毕) · 看云...

# Restful API>[success]Restful API是目前Web API 设计中比较流行的一种设计风格。## Restful API>[info]RESTful是一种软件架构风格、设计风格,而**不是**标准,只是提供了一组设计原则和约束条件。>[danger]对于这种风格,ThinkPHP…

php 向服务器发放请求,PHP客户端向服务器端发送请求并向远程服务器发送服务器端请求...

我的方案如下:>单击按钮时,客户端将向服务器端发送请求>一旦服务器端收到请求,它将向远程服务器发送另一个请求以获得结果>一旦响应到来,服务器端应该回应客户端的响应.客户$.post(login_server.php{act:"post",phone:phone,passwords:passwords…

php检查在线用户,php – 检查用户是否在线laravel

我有列last_activity,其中写入日期最后一个活动用户使用中间件.我如何检查在线用户以及何时注销?中间件:class LastActivityUser{/*** Handle an incoming request.** param \Illuminate\Http\Request $request* param \Closure $next* return mixed*/pu…

java 写文件缓存,java泛型实现文件缓存

package joyport.hbase;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.HashMap;/*** 文件缓存读写** author xiepengjoyport.com*/public class…

java方法重载的意义,java方法重载

class ChongZai{public void a(int a);public void a(Strting a);public void a(int a,int b);}如上就是一个重载了 而重载要满足一下条件:1.必须是同一个类2.方法名(也可以叫函数)一样3.参数类型不一样或参数数量不一样重载的作用:还是以上面的例子ChongZai cz new…

php7改进,关注一下:PHP 7.3.7 正式发布 改进、修复的地方不少哦

PHP 7.3.7正式发布了。PHP(PHP:Hypertext Preprocessor)是一种在电脑上执行的脚本语言,主要是用途在于处理动态网页,也包含了命令列执行接口(command line interface),或者产生图形使用者接口(GUI)程式。版本主要还是修复 bug&…

matlab光学教程,基于MATLAB的物理光学仿真

摘要:利用MATLAB编程语言对典型物理光学实验进行了仿真模拟,制作了包括干涉、衍射、信息光学、晶体光学实验在内的光学实验仿真平台,可应用到光学理论和实验教学中,使整个抽象的物理过程变得直观形象,增强了学生的学习…

php jwt token刷新方案,laravel JWT自动刷新 自定义验证器

在前面的文章中,我们引入了JWT的验证方式,但是在前面并没有做过多的处理,只是用JWT生成了一个token,那么今天来就解决后续问题为了保证用户信息的安全, 我们的生成的JWT不可能一直有效,我们在配置文件里边配…

php orm 链式,关于php:雄辩的ORM中的交叉和分页

大家好,我有3张桌子:具有以下属性的名为content的表:idnametable_type_idrelease_datepopularity另一个名为content_genres的表,具有以下属性:content_idgenres_id另一个具有以下属性的表,称为genres&#…

2019java形势,2019Java开发还有哪些发展

相信已经有不少人在心里考虑着春节之后转行新工作了吧,而在众多行业中IT行业,特别是Java开发、Java程序员等岗位相信是很多人的首选。谁让现在程序员薪资这么高呢,但是现在互联网发展迅速,各类编程语言层出不穷,比如py…

php取消转译代码,PHP在我不需要的时候进行转义

我有一个问题,即PHP在我不希望它出现在代码中的地方进行转义:$url_ stripslashes(((substr(strtolower($url),0,7)!"http://")? "http://".$url:$url));$host $this->googleDomains[mt_rand(0,count($this->googleDomains)-1)];$target "/s…

matlab给plc发送命令,想学习下如何将PLC发送的指令让软件接收到?

PLC作为下位机,接收上位机的执行命令,并将执行结果反馈给上位机。工具/原料电脑、PLC、USB转RS232数据线和RS232转RS485模块(或者USB转RS485)方法/步骤PLC与电脑线路连接,根据电脑的串口情况,1.电脑自带RS232串口,那么…

mysql允许两个用户远程连接,配置MySQL服务允许用户远程连接

默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/my.conf文件。一、修改/etc/mysql/my.conf找到bind-address 127.0.0.1这一行改为bind-address 0.0.0.0即可二、为需要远程登录的用户赋予权限1、新建用户远程连接…

pupload 文件分块 php,基于Plupload实现Base64分割的文件上传方案

标题:基于Plupload实现Base64分割的文件上传方案关键词:文件上传、Base64、Plupload、Blob、分割上传领域:Web前端作者:孙振强日期:2018-04-13目录背景存在问题2.1. 体积增加1/32.2. 大文件上传不稳定方案思路3.1. 将服…