?? changetime.java
字號:
import java.io.*;//import java.text.*;import java.util.*;public class ChangeTime{ private int delay=0; //超期或推后時間(毫秒) private String fileName; //原文件名 private String outFileName; //輸出文件名(可選) public static void main(String args[]){ if(args.length<2){ System.err.println("Usage: java ChangeTime <file> <delay> [<outfile>]"); System.exit(1); } int delay=0; try{ delay=Integer.parseInt(args[1]); } catch(NumberFormatException e) { System.err.println("Invalid delay time, Number format"); System.exit(1); } ChangeTime chnTime=null; if(args.length==3){ chnTime=new ChangeTime(args[0],delay,args[2]); } else chnTime=new ChangeTime(args[0],delay,args[0]); chnTime.displayText(); }//Contructor public ChangeTime(String fileName,int delay,String outFileName){ this.fileName=fileName; this.delay=delay; this.outFileName=outFileName; }//轉(zhuǎn)換過程 public void displayText() {// FileInputStream io=null; BufferedReader bio=null;// ObjectOutputStream oout=null; BufferedWriter bout=null; String line; Vector vt=new Vector(); //讀字幕數(shù)據(jù) try{// io=new FileInputStream(fileName); bio=new BufferedReader(new FileReader(fileName)); } catch(FileNotFoundException e){ System.err.println("File not found"); System.exit(1); } try{ while((line=bio.readLine())!=null){ int no=Integer.parseInt(line); String timeZone=bio.readLine(); String text=""; while((line=bio.readLine()).length()!=0){ text+=line+"\n"; }// System.out.println(text); FilmFrame ff=new FilmFrame(no,timeZone,text); vt.add(ff); } } catch(IOException e){ System.err.println("File read error"); System.exit(1); } //寫字幕數(shù)據(jù)// bout=new BufferedWriter(new FileWriter(fileName)); try{// File file=new File(outFileName); bout=new BufferedWriter(new FileWriter(outFileName)); } catch(IOException e){ System.err.println("File open error"); System.exit(1); } try{ for (int i=0;i<vt.size() ;i++ ) { FilmFrame ff=(FilmFrame)vt.elementAt(i); delay=ff.changeTime(delay); String str=ff.toString(); bout.write(str,0,str.length()); bout.flush();// bout.newLine();// System.out.println(ff.getTimeZone()); } } catch(IOException e){ System.err.println("File write error"); System.exit(1); } }//字幕類 class FilmFrame implements Serializable { private int beginTime; private int endTime; private int seqence; private String text;//Consturctor public FilmFrame(int seqence,int beginTime,int endTime,String text){ this.seqence=seqence; this.beginTime=beginTime; this.endTime=endTime; this.text=text; } public FilmFrame(int seqence,String timeZone,String text){ this.seqence=seqence; this.beginTime=toTime(timeZone.substring(0,12)); this.endTime=toTime(timeZone.substring(17)); this.text=text; }//獲得序號 public int getSequence(){ return seqence; }//獲得字幕文本 public String getText(){ return text; }//修改時間 public int changeTime(int delay){ beginTime+=delay; endTime+=delay; if(beginTime<0){ delay=delay-beginTime; endTime=endTime-beginTime; beginTime=0; } return delay; }//解析時間 private int toTime(String timeZone){ int hour=Integer.parseInt(timeZone.substring(0,2)); int minute=Integer.parseInt(timeZone.substring(3,5)); int second=Integer.parseInt(timeZone.substring(6,8)); int msec=Integer.parseInt(timeZone.substring(9)); return (((hour*60)+minute)*60+second)*1000+msec; }//把時間轉(zhuǎn)換為字幕時間段 private String toTimeZone(int time){ int hour; int minute; int second; int msec; String result=""; hour=(int)Math.floor(time/3600000); minute=(int)Math.floor((time % 3600000)/60000); second=(int)Math.floor(((time % 3600000) %60000 )/1000); msec=time-hour*3600000-minute*60000-second*1000; result+=((hour>=10)?(""+hour):("0"+hour))+":"; result+=((minute>=10)?(""+minute):("0"+minute))+":"; result+=(second>=10)?(""+second):("0"+second); result+=","+((msec>=100)?(""+msec):((msec>=10)?("0"+msec):("00"+msec))); return result; }//獲得字幕時間段 public String getTimeZone(){ return toTimeZone(beginTime)+" --> "+toTimeZone(endTime); }//輸出字幕 public String toString(){ return seqence+"\n"+ getTimeZone()+"\n"+ text+"\n"; } }}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -