自己写了个程序,从某台歌词服务器上下载了近一万首歌词(二十个线程,不到一个小时的时间)但是歌词的文件名都是数字 ,类似1.lrc、2.lrc……
歌词文件内容格式如下:
[ar:阿杜]
[ti:黄昏]
[hash:845f72c1f9a16c520463846e203039d2]
[total:260780]
[00:22.31] 下着雨的天气
[00:25.54] 好象你可爱的坏脾气
[00:30.35] 我的爱我的心
[00:33.55] 早就已经交给了你
[00:37.42] 你说我很不错
[00:40.72] 是不是在暗示什么
其中[ar:] 里面的是 歌曲的演唱者 [ti:]里面的是歌曲名。不过有些没有[ar:] 或[ti:]标记
现在想把这些歌词文件 用其内容 命名成 【演唱者 - 歌曲名】 的格式,以下是java的实现
import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;
public class Rename {
/**
* @param args
*/
public static void main(String[] args) {
File file = new File("d:/aaa/"); //歌词存放路径
long start = System.currentTimeMillis();
File[] fList = file.listFiles(new FilenameFilter() { //过滤文件,只处理 lrc格式的
@Override
public boolean accept(File dir, String name) {
if (!name.endsWith(".lrc"))
return false;
return true;
}
});
byte[] buf = new byte[1000];
for (int i = 0; i < fList.length; i++) {
try {
FileInputStream fis = new FileInputStream(fList[i]);
int length = fis.read(buf, 0, buf.length); //将文件开头的1000个字节读入到buf里
fis.close();
String tmp = new String(buf, 0, length);
rename(fList[i], tmp); // 重命名
} catch (Exception e) {
System.out.println(e);
}
}
long usedTime = System.currentTimeMillis()-start;
System.out.println("用时:"+usedTime);
}
public static void rename(File file, String str) {
String fullname = "";
String artist = "";
String name = "";
if (-1 != str.indexOf("[ar:")) {
String tmp = str.substring(str.indexOf("[ar:"), str.length());
artist = tmp.substring(0, tmp.indexOf("]"))
.replaceAll("\\[ar:", "");
if (-1 != str.indexOf("[ti:")) {
String tmp2 = str.substring(str.indexOf("[ti:"), str.length());
name = tmp2.substring(0, tmp2.indexOf("]")).replaceAll(
"\\[ti:", "");
fullname = artist + " - " + name;
} else {
fullname = artist + " - 未知歌名";
}
} else {
if (-1 != str.indexOf("[ti:")) {
String tmp2 = str.substring(str.indexOf("[ti:"), str.length());
name = tmp2.substring(0, tmp2.indexOf("]")).replaceAll(
"\\[ti:", "");
fullname = "未知歌手 - " + name;
}
}
if (!"".equals(fullname)) {
file.renameTo(new File(file.getParent() + fullname + ".lrc"));
}
}
}
经实际测试,处理近10000个文件 实际用时 不到一秒!
分享到:
相关推荐
这个源代码包,"Java文件分割程序源代码.rar",提供了实现这一功能的Java编程逻辑,可以跨多个平台运行,这得益于Java的“一次编写,到处运行”特性。它还特别提到与CofeCut兼容的切割算法,这意味着该程序可能采用...
"AIin_java.rar"这个压缩包文件显然包含了与Java实现人工智能相关的源代码示例,特别强调了其简单易懂的特点,适合初学者和对AI感兴趣的开发者参考。 首先,我们来看"Practical_ai_programming_in_java"这个文件名...
"dl4s"可能代表"深度学习for搜索引擎",文件可能包含实现上述概念的源代码示例。通过阅读和理解这些代码,开发者可以学习如何在Java环境中整合深度学习技术来构建搜索引擎。 总之,深度学习搜索引擎开发涉及深度...
`RandomAccessFile`是Java中用于随机访问文件的类,它实现了`DataInput`和`DataOutput`接口,允许程序读写文件。该类支持随机访问模式,即可以定位到文件的任意位置进行读写操作,适用于大数据量文件的处理。 #### ...
在Java项目中,这通常是一个包含源代码(.java文件)、编译后的字节码(.class文件)、配置文件(如XML)以及可能的测试代码和数据的结构。Alice目录可能下设src、lib、test等子目录,分别存放源码、依赖库和测试...
总的来说,华为智能计算培训的Java课程涵盖了Java语言的基础知识、核心概念以及其在智能计算领域的应用。通过深入学习,开发者可以构建高效、可移植的软件解决方案,并利用Java的强大功能在各种计算环境中发挥作用。
Java的命名来源于印度尼西亚的一个岛屿——爪哇岛,意在象征着为用户带来如同咖啡般的清新体验。 #### 二、Java的组成部分 1. **Java语言**:一种面向对象的编程语言,支持多种操作系统和设备上的应用开发。 2. **...
在"Java_人工智能工程的应用框架.zip"这个压缩包中,我们有两个主要的文件:"说明.txt"和"spring-ai_main.zip"。下面将详细讨论Java在人工智能中的应用框架及其相关知识点。 首先,Java作为一种跨平台、面向对象的...
【Java新闻抓取】是一种利用编程技术从网络上自动收集并处理特定信息的过程,这里主要关注的是使用Java语言来实现对腾讯IT业界滚动新闻的抓取。在IT领域,新闻抓取是数据挖掘的重要组成部分,它能帮助我们获取实时、...
- 类文件通常以它们所继承的基类或其主要功能命名,如`MainActivity.java`(继承自Activity)。 - 数据适配器类以`Adapter`作为后缀,如`ListViewAdapter.java`。 - 自定义类的名称应根据其功能进行分类,如`...
"WordSimilarityDemo"这个文件很可能是该JAVA源码的示例程序,用于演示如何使用代码来计算单词之间的相似度。它可能采用了某种特定的算法,如基于词汇共现的Jaccard相似度、余弦相似度,或者是基于词向量的Word2Vec...
包是Java中的命名空间,组织类和接口的一种方式。API文档中,每个包都有详细的描述,如`java.io`包用于处理输入/输出操作,`java.net`包处理网络通信,`java.awt`和`javax.swing`包提供图形用户界面支持。了解包...
- **javac**:编译器,将源代码(.java文件)编译成字节码(.class文件),字节码是JVM可读的格式。 - **java**:运行器,启动JVM并执行字节码文件,需要包含main()方法作为程序入口。 #### 三、Java语法基础 **关键字...
该毕业设计项目是一个基于Java Web技术的智能二维码门禁管理系统,旨在实现安全、便捷的门禁控制功能。项目的核心在于利用二维码技术进行身份验证和权限管理,为用户提供一种无接触式的出入控制方式。 首先,系统的...
本资源摘要信息是根据《Java 语言程序设计实验指导(2023 版)》文件的内容生成的知识点。 实验说明与要求 在进行 Java 语言程序设计实验时,需要注意以下几点: * 实验课中,不允许使用智能手机等工具。 * ...
3. **Java Platform Micro Edition (Java ME)**:用于移动设备和嵌入式系统的应用开发,如智能手机上的应用。 为了开发和运行Java程序,需要以下组件: - **JDK (Java Development Kit)**:包含了Java的开发工具和...
总之,Windows文件查找功能的核心在于高效的文件索引和智能的搜索算法,这为我们提供了快速定位文件的能力。通过理解这些原理,我们可以更好地利用这一功能,甚至在自己的程序中实现类似的功能。
1991年,高斯林和他的团队开始开发Java语言,并将其命名为“Oak”,但是由于Oak已经被注册,于是改名为Java。 1995年5月23日,Java语言正式诞生。1996年1月,第一个JDK(Java Development Kit)JDK1.0发布。1996年4...