importjava.awt.BorderLayout;importjava.awt.Container;importjava.awt.Dimension;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Iterator;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importjavax.swing.JButton;importjavax.swing.JFileChooser;importjavax.swing.Jframe;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclassSortLrc {privateFile lrcFile=null;privateString lrcDir="";privateJFileChooser dirChoose=newJFileChooser();privateJFileChooser fileChoose=newJFileChooser();privateJFileChooser chooser=newJFileChooser();privateJButton saveButton=newJButton("保存路径");privateJButton selectButton=newJButton("选择lrc文件");privateJLabel saveLable=newJLabel("d:");privateJLabel selectLable=newJLabel("d:");privateJPanel panelButton=newJPanel();privateJPanel panelLabel=newJPanel();privateJPanel panelSort=newJPanel();privateJButton sortButton=newJButton("排序歌词");publicSortLrc() {
Jframe frame=newJframe("歌词文件整理");
frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);//选择目录,选择文件的话注释掉这行。dirChoose.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChoose.setFileSelectionMode(JFileChooser.FILES_ONLY);
saveButton.addActionListener(newActionListener() {publicvoidactionPerformed(ActionEvent e) {intretValue=dirChoose.showSaveDialog(saveButton);if(retValue==JFileChooser.APPROVE_OPTION) {
lrcDir=dirChoose.getSelectedFile().toString();
saveLable.setText(dirChoose.getSelectedFile().toString());
}
}
});
selectButton.addActionListener(newActionListener() {publicvoidactionPerformed(ActionEvent e) {intretValue=fileChoose.showSaveDialog(selectButton);if(retValue==JFileChooser.APPROVE_OPTION) {
lrcFile=fileChoose.getSelectedFile();
selectLable
.setText(fileChoose.getSelectedFile().toString());
}
}
});
sortButton.addActionListener(newActionListener() {
@OverridepublicvoidactionPerformed(ActionEvent e) {try{
sortLrc();
}catch(IOException iOE) {
System.out.println("整理歌词失败");
}
}
});
panelButton.add(selectButton);
panelLabel.add(selectLable);
panelButton.add(saveButton);
panelLabel.add(saveLable);
panelSort.add(sortButton);
panelLabel.setLayout(newGridLayout(2,2,20,20));
panelButton.setLayout(newGridLayout(2,2,20,20));
Container pane=frame.getContentPane();
pane.setLayout(newBorderLayout());
pane.add(panelButton, BorderLayout.WEST);
pane.add(panelLabel, BorderLayout.CENTER);
pane.add(panelSort, BorderLayout.SOUTH);
frame.setPreferredSize(newDimension(400,300));
frame.pack();
frame.setLocation(400,200);
frame.setVisible(true);
}privatevoidsortLrc()throwsIOException {
ArrayListsortList=newArrayList();
FileReader fr=newFileReader(lrcFile);
BufferedReader br=newBufferedReader(fr);
StringBuilder sb=newStringBuilder();
String str="";while((str=br.readLine())!=null) {if(!isTimeLine(str)) {
sb.append(str+" ");
}else{
speLine(str, sortList);
}
}
Collections.sort(sortList);for(Iteratoriterator=sortList.iterator(); iterator
.hasNext();) {
LrcTimeFormat lrcTimeFormat=(LrcTimeFormat) iterator.next();
sb.append(lrcTimeFormat+" ");
}
File sortFile=newFile(lrcDir+"\"+lrcFile.getName());
System.out.println(sortFile.getAbsolutePath());
FileWriter fw=newFileWriter(sortFile);
fw.write(sb.toString());
br.close();
fr.close();
fw.close();
}privatestaticBoolean isTimeLine(String str) {
String timeRege=".*\[[\d]{2}\:[\d]{2}\.[\d]{2}\].*";returnstr.matches(timeRege);
}privatestaticvoidspeLine(String str, ArrayListlist) {
String timeRege="\[[\d]{2}\:[\d]{2}\.[\d]{2}\]";
Pattern p=Pattern.compile(timeRege);
Matcher m=p.matcher(str);
String tail=str.replaceAll("\[.*\]","");while(m.find()) {
String lineUnit=m.group()+tail;//System.out.println(lineUnit);list.add(newLrcTimeFormat(lineUnit));
}
}publicstaticvoidmain(String[] args) {newSortLrc();
}