读取srt文本文件

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;


import android.app.Activity;
import android.os.Bundle;
import android.text.Html;
import android.widget.TextView;


public class readtxt extends Activity {
/** Called when the activity is first created. */
@SuppressWarnings("unused")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = (TextView) findViewById(R.id.tv);
StringBuffer buffer = new StringBuffer();
List<srtBean> srtList = new ArrayList<srtBean>();
try {


BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(
"/mnt/sdcard/aaa.srt"),"GBK"));
int pos = 0;
String readline = null;
srtBean srtbean = null;
while ((readline = br.readLine())!=null) {
if (pos == 0) {
srtbean = new srtBean();
}
pos++;
switch (pos) {
case 1:
break;
case 2:
convert(readline, srtbean);
break;
case 3:
buffer.append(readline);
break;
default:
if(readline.equals("")){
pos = 0;
srtbean.setContent(buffer.toString());
srtList.add(srtbean);
buffer.setLength(0);
} else {
buffer.append("<br>"+readline);
}
break;
}
}
br.close();
} catch (IOException e) {
tv.setText("没有字幕");
}
tv.setText(Html.fromHtml(srtList.get(5).getContent()));
for (int i = 0; i < srtList.size(); i++) {
System.out.println(srtList.get(i).getStarTime() + "="
+ srtList.get(i).getEndTime() + "\n"
+ Html.fromHtml(srtList.get(i).getContent()));
}


}


private static void convert(String line, srtBean srtbean) {
if (line.indexOf("-->") > 0) {
String[] tmp = line.split("-->");
String t0 = conv(tmp[0]);
String t1 = conv(tmp[1]);
srtbean.setStarTime(Integer.parseInt(t0));
srtbean.setEndTime(Integer.parseInt(t1));
}
}


private static String conv(String str) {
String[] tmp = str.split(",");
String times = tmp[0].trim();
String ms = tmp[1].trim();
if (ms.substring(0, 1).equals("0")) {
if (ms.substring(1, 2).equals("0")) {
if (ms.substring(2, 3).equals("0")) {
ms = "0";
} else {
ms = ms.substring(2);
}
} else {
ms = ms.substring(1);
}
}
int w = Integer.parseInt(ms);
String[] tm = times.split(":");
String hh = tm[0];
String mm = tm[1];
String ss = tm[2];
if (hh.substring(0, 1).equals("0")) {
if (hh.substring(1, 2).equals("0")) {
hh = "0";
} else {
hh = hh.substring(1);
}
}
if (mm.substring(0, 1).equals("0")) {
if (mm.substring(1, 2).equals("0")) {
mm = "0";
} else {
mm = mm.substring(1);
}
}
if (ss.substring(0, 1).equals("0")) {
if (ss.substring(1, 2).equals("0")) {
ss = "0";
} else {
ss = ss.substring(1);
}
}
int h = Integer.parseInt(hh) * 60 * 60 * 1000;
int m = Integer.parseInt(mm) * 60 * 1000;
int s = Integer.parseInt(ss) * 1000;
return String.valueOf(h + m + s + w);
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值