//主要用到了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();
}
}
}
}