//主要用到了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. the server responded with a status of 404 (HTTP/1.1 404 Not Found)
  2. html5网站测试工具,基于HTML5网页的前端技术测试技巧
  3. JavaScript 存储Cookie
  4. [Remoting FAQ]Loading a Remoting Host On IIS得到BadImageFormatException
  5. 如何将一个JavaScript数组打乱顺序?
  6. 前端JAVASCRIPT模块化开发
  7. API不治,混合云何以统天下?
  8. 在windows平台上编写的python程序无法在_【判断题】在Windows平台上编写的Python程序无法在Unix平台运行。...
  9. 数据结构Java第四版pdf_数据结构与抽象:Java语言描述(原书第4版) 中文pdf完整版[131MB]...
  10. windows——运行命令大全(让你的电脑掌控在自己手中)
  11. 企业微信 Android端开发
  12. EXCEL数据行数达上线,读取发生错误
  13. 制作u盘winpe启动盘_U盘PE启动盘制作方法
  14. 风笑天社会研究方法第5版笔记和课后答案
  15. 笑着学Spring - (3) - Spring事务管理
  16. 超硬核!第16届CLK大会完整议程全公布!
  17. 【Unity】3D雷霆战机
  18. 使用IDEA连接本地数据库
  19. unity 3d iphone android 通用,在Unity3D中使用iPhone原生UI
  20. 初识3D Game——战地3,使命召唤8:现代战争3,Crysis 2:孤岛危机2

热门文章

  1. 地产网站建设步骤-企业房地产网站建设策划技巧及方案
  2. Collection概述与基本使用
  3. Windows7(64位)环境下安装openssl详细步骤+图解
  4. Android获取电池电量信息的几种方式
  5. fastboot出现错误:no permissions fastboot
  6. adb 指令创建文件和文件夹
  7. 技多不压身,语言越多越好?
  8. 【算法】【题解】【usaco】 最受欢迎的牛
  9. 关于大疆御2行业进阶版(M2EA)热红外照片温度信息提取问题
  10. 武汉大学计算机学院出国,武汉大学本科生出国(境)交流学习奖学金院系汇总表.PDF...