//主要用到了java io 的基本知识 和 正则表达式

package com.su;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import android.widget.Toast;

public class LrcManager {

public void save(String content,String filePath) {//保存lrc

filePath = "/sdcard/lrc1.txt";

if(!filePath.endsWith(".txt") && !filePath.endsWith(".log"))

filePath += ".txt";

File file = new File(filePath);

try {

OutputStream outstream = new FileOutputStream(file);

OutputStreamWriter out = new OutputStreamWriter(outstream);

out.write(content);

out.close();

} catch (java.io.IOException e) {

e.printStackTrace();

}

}

public String read(){//读取lrc

String path = "/sdcard/lrc1.txt";

String content="";

//打开文件

File file = new File(path);

//如果path是传递过来的参数,可以做一个非目录的判断

if (file.isDirectory()){

//Toast.makeText(TestLrcActivity.this, "没有指定文本文件!", 1000).show();

}

else{

try {

InputStream instream = new FileInputStream(file);

if (instream != null) {

InputStreamReader inputreader = new InputStreamReader(instream);

BufferedReader buffreader = new BufferedReader(inputreader);

String line;

//分行读取

while (( line = buffreader.readLine()) != null) {

content += line + "\n";

}

instream.close();

}

}

catch (java.io.FileNotFoundException e) {

//Toast.makeText(TestLrcActivity.this, "文件不存在", Toast.LENGTH_SHORT).show();

} catch (IOException e) {

e.printStackTrace();

}

}

return content;

}

public void deallrc(){//lrc to txt

Pattern pattern = Pattern.compile("\\[\\d{2}:\\d{2}.\\d{2}\\]");//Pattern+Matcher类构成正则表达式

File f1 = new File("/sdcard/lrc1.txt");

File f2 = new File("/sdcard/lrc2.txt");

BufferedReader reader1 = null;

FileWriter write1 = null;

try {

reader1 = new BufferedReader(new FileReader(f1));

write1 = new FileWriter(f2);

String line = null;

while ((line = reader1.readLine()) != null) {

for (int i = 0; i < line.length(); i++) {

Matcher m=pattern.matcher(line);

line = m.replaceAll("");

line = line.replaceAll("\\[offset:\\d{3}\\]","");//正则表达式使用replaceAll()方法

line = line.replace("ti","歌名");//替换字符串

line = line.replace("ar","歌手");

line = line.replace("al","专辑");

line = line.replace("by","Lrc歌词作者");

//line = line.replace("]","");

line = line.replace("url","歌词来源");

line = line.replace("null","");

}

if (line!="\n"&&line!=null&&line!=""&&line!="null") {

System.out.println(line);

write1.write(line+"\n");

}

}

} catch (IOException e) {

System.out.println("出现异常");

} finally {

try {

reader1.close();

write1.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

android lrc歌词解析,正则表达式练习: android 歌词解析lrc 转 txt 代码相关推荐

  1. android开发--mp3播放器项目源代码(xml文件解析,.lrc,.mp3文件下载,同时显示歌词)

    一.mp3播放器源代码 1.MainActivity.java:在此中主要负责播放器首页的功能,包括服务器上的下载列表,和SD卡上已经下载的mp3文件列表package com.wyt.MP3play ...

  2. lrc歌词解析(正则表达式)与歌词卡拉ok显示的思路

    一.从本地读取lrc文件      从本地读取文件,android提供了与java相同的io操作,只不过要在AndroidManifest.xml添加读写sdcard权限 <uses-permi ...

  3. android开发歌词滑动效果_android实现歌词自动滚动效果

    最近在做Android 的MP3播放的项目,要实现歌词的自动滚动,以及同步显示. lyric的歌词解析主要用yoyoplayer里面的,显示部分参考了这里 ,这里只是模拟MP3歌词的滚动. 先上一下效 ...

  4. Android自定义View实战:简约风歌词控件

    作者:jsyjst 前言 最近重构了之前的音乐播放器,添加了许多功能,比如歌词,下载功能等.这篇文章就让我们聊聊歌词控件的实现,先上效果图,如果感觉海星,就继续瞧下去! 看到这里,估计你对这个控件还有 ...

  5. 乐乐音乐:Android音乐播放器及动感(KTV)歌词相关博客汇总

    相关简介 Java Swing PC版本乐乐音乐播放器 乐乐音乐PC播放器单机版本,支持ape,wav,flac,mp3等多种格式,支持动态ksc.hrc.krc歌词文件和支持和显示翻译歌词和音译歌词 ...

  6. Android自定义View实战:简约风歌词控件,Android开发者值得深入思考的几个问题

    57[02:41.62]从不知 她的痛苦 58[02:52.02] 59[02:54.11]喜欢你 那双眼动人 60[03:00.13]笑声更迷人 61[03:02.38] 62[03:03.14]愿 ...

  7. android开发歌词滑动效果_android 实现歌词自动滚动+手指顺畅拖动

    需求: 1.歌词可以跟随播放进度进行自动滑动: 2.可以手指进行歌词顺畅滑动: 3.当前歌词高亮,且置于屏幕的中心: 实现方式一: 也是网上可以搜到的做多的方式:自定义view,继承textview; ...

  8. Java播放歌词同步源码,Android 实现歌词同步

    歌词同步的原理其实很简单: 歌词显示是一个线程, 音乐播放时一个线程,通过播放时间将歌词显示进度与播放进度同步起来. 网络标准的歌词格式是LRC. 我们看下一个LRC文档,其格式就一目了然了. [ti ...

  9. android歌词同步源码,Android KTV歌房歌词同步实现流程

    歌词同步实现流程 1 功能实现流程图 目前运用最广的歌词文件LRC文件内容如下. [00:02.37] 即构KTV [00:03.12] [00:03.80] 作词:即构 [00:04.55] 作曲: ...

最新文章

  1. 【OpenCV 4开发详解】图像噪声的种类与生成
  2. 选错导师误终身?Nature大调查显示 :全球1/4博士生想换导师
  3. Linux中的信号处理原理
  4. Inversion of Control Containers and the Dependency Injection pattern--Martin Fowler
  5. JQuery的筛选方法
  6. go语言中结构体与json
  7. mac终端命令行总结
  8. leetcode 4
  9. C语言 函数缺省参数 - C语言零基础入门教程
  10. rx java定时循环_Rxjava定时器异常循环
  11. Kruskal算法的C++语言程序
  12. 面向对象编程Sample(C#)
  13. 2019年第五届计蒜之道复赛总结
  14. python求解给定一字符串列表判定每个字符串可以构成的所有序列中回文序列的数目
  15. Error:java.lang.RuntimeException: Some file crunching failed, see logs for detail
  16. Java一般操作 对象序列化和反序列化
  17. 多个安卓设备投屏到电脑_安卓手机怎么投屏到电脑上?这样做,在电脑上就能操控手机...
  18. (2015年度)黑龙江测绘地理信息局青年学术和技术带头人考评与增选公示
  19. 考研二阶矩阵合同的计算
  20. 数据挖掘——基于R文本情感分析(2)

热门文章

  1. 20220625阶段总结
  2. CentOS7 LVM与RAID简单使用
  3. 房地产行业网站建设方案
  4. Android React Native使用原生UI组件
  5. oracle java listener_oracle监听器启动,实例启动
  6. 【成长经历】【钉钉前端】 高中毕业-如何用 15 年从小白到技术专家
  7. QPSK和16QAM基带信号解调误比特率理论限和仿真对比
  8. mysql prepare有什么用_mysql中的prepare介绍和应用
  9. Druid技巧之使用PrepareStatement时输出完整SQL语句
  10. 推荐几个免费发布文章的网站