欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)酷狗音樂臨時(shí)緩存文件轉(zhuǎn)換為MP3文件的方法

 更新時(shí)間:2016年08月19日 09:37:59   作者:k55k3  
這篇文章主要介紹了java實(shí)現(xiàn)酷狗音樂臨時(shí)緩存文件轉(zhuǎn)換為MP3文件的方法,涉及java針對(duì)文件操作的相關(guān)技巧,需要的朋友可以參考下

本文實(shí)例講述了java實(shí)現(xiàn)酷狗音樂臨時(shí)緩存文件轉(zhuǎn)換為MP3文件的方法。分享給大家供大家參考,具體如下:

酷狗臨時(shí)緩存文件,其實(shí)已經(jīng)是吧MP3文件下載好了,只是名字看上去好像是通過md5算法重命名的。

酷狗在緩存文件的時(shí)候會(huì)同時(shí)緩存歌詞。這個(gè)程序就是根據(jù)md5管理對(duì)應(yīng)的歌詞文件和緩存文件,然后把緩存文件改成 歌曲名+.mp3格式。

原諒我取這么長(zhǎng)也不知道對(duì)不對(duì)的類名。

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<String,File> temps = fileMd5Map(tempPath);
    Map<String,String> 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<String, File> fileMd5Map(String path) {
    File dirFile = new File(path);
    Map<String, File> map = null;
    if (dirFile.isDirectory()) {
      map = new HashMap<String, File>();
      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<String,String> krcNameMd5Map(String path){
    File dirFile = new File(path);
    Map<String, String> map = null;
    if (dirFile.isDirectory()) {
      map = new HashMap<String, String>();
      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) 方法只是用來測(cè)試用的。調(diào)一下字符串之類的

主要使用ChangeByDir方法,參數(shù)是臨時(shí)文件的文件夾和歌詞文件的文件夾

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • iOS獲取AppIcon and LaunchImage''s name(app圖標(biāo)和啟動(dòng)圖片名字)

    iOS獲取AppIcon and LaunchImage''s name(app圖標(biāo)和啟動(dòng)圖片名字)

    這篇文章主要介紹了iOS獲取AppIcon and LaunchImage's name(app圖標(biāo)和啟動(dòng)圖片名字)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • Java責(zé)任鏈模式詳解

    Java責(zé)任鏈模式詳解

    責(zé)任鏈模式(Chain?of?Responsibility?Pattern)是一種行為型設(shè)計(jì)模式,它用于將請(qǐng)求的發(fā)送者和接收者解耦,使得多個(gè)對(duì)象都有機(jī)會(huì)處理這個(gè)請(qǐng)求,本文將詳細(xì)介紹?Java?中的責(zé)任鏈模式,包括其概念、結(jié)構(gòu)、實(shí)現(xiàn)方式以及應(yīng)用案例等,需要的朋友可以參考下
    2023-05-05
  • MyBatisPlus?大數(shù)據(jù)量查詢慢的問題解決

    MyBatisPlus?大數(shù)據(jù)量查詢慢的問題解決

    本文主要介紹了MyBatis?Plus?解決大數(shù)據(jù)量查詢慢問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • MyBatis多數(shù)據(jù)源的兩種配置方式

    MyBatis多數(shù)據(jù)源的兩種配置方式

    這篇文章主要給大家介紹了關(guān)于MyBatis多數(shù)據(jù)源的兩種配置方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Java中常用的設(shè)計(jì)模式之工廠模式詳解

    Java中常用的設(shè)計(jì)模式之工廠模式詳解

    這篇文章主要為大家詳細(xì)介紹了Java中常用的設(shè)計(jì)模式之工廠模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Java8使用stream實(shí)現(xiàn)list中對(duì)象屬性的合并(去重并求和)

    Java8使用stream實(shí)現(xiàn)list中對(duì)象屬性的合并(去重并求和)

    這篇文章主要介紹了Java8使用stream實(shí)現(xiàn)list中對(duì)象屬性的合并(去重并求和),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Java 創(chuàng)建并應(yīng)用PPT幻燈片母版的方法示例

    Java 創(chuàng)建并應(yīng)用PPT幻燈片母版的方法示例

    幻燈片母版可供用戶設(shè)置幻燈片的樣式,本文將介紹如何用Java創(chuàng)建并應(yīng)用單個(gè)或多個(gè)幻燈片母版。感興趣可以了解一下
    2020-06-06
  • J2ee 高并發(fā)情況下監(jiān)聽器實(shí)例詳解

    J2ee 高并發(fā)情況下監(jiān)聽器實(shí)例詳解

    這篇文章主要介紹了J2ee 高并發(fā)情況下監(jiān)聽器實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java實(shí)現(xiàn)8種排序算法的示例代碼

    Java實(shí)現(xiàn)8種排序算法的示例代碼

    這篇文章主要介紹了8種JAVA實(shí)現(xiàn)排序算法的示例代碼,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • SpringBoot 利用RestTemplate http測(cè)試

    SpringBoot 利用RestTemplate http測(cè)試

    這篇文章主要介紹了SpringBoot 利用RestTemplate http測(cè)試,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論