import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Test extends JFrame{
/**
* @param args
*/
public static void main(String[] args) {
new Test();
}
public Test() {
setLayout(new FlowLayout());
JButton button = new JButton("选择文件");
add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
FileDialog dialog = new FileDialog(Test.this,"选择文件",FileDialog.LOAD);
dialog.setVisible(true);
dialog.setFilenameFilter(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.lastIndexOf(".txt") > 0;
}
});
String folder = dialog.getDirectory();
String f = folder + dialog.getFile();
System.out.println(f);
action(f);
}
});
setBounds(new Rectangle(500,300));
setLocationRelativeTo(null);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void action(String sPath) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(sPath));
String line = null;
String[] s1 = {};
String[] s2 = {};
int m = 0,n = 0;
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer();
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
String regex = "(\\d)([^\\d]+)";
Pattern p = Pattern.compile(regex);
while ((line = br.readLine()) != null) {
Matcher matcher = p.matcher(line);
if (matcher.find()) {
String num = matcher.group(1);
String words = matcher.group(2);
System.out.println(num + words);
list1.add(num);
list2.add(words);
}
}
s1 = new String[list1.size()];
s2 = new String[list2.size()];
for (int i=0;i<list1.size();i++) {
s1[i] = list1.get(i);
s2[i] = list2.get(i);
if ("1".equals(s1[i])) {
m++;
sb1.append(s2[i]).append("\r\n");
}
if ("2".equals(s1[i])) {
n++;
sb2.append(s2[i]).append("\r\n");
}
}
JOptionPane.showMessageDialog(this, "m=" + m + ",n=" + n);
String folder = sPath.substring(0,sPath.lastIndexOf(File.separator));
System.out.println(folder);
String newpath1 = folder + File.separator + "abc.txt";
String newpath2 = folder + File.separator + "def.txt";
BufferedWriter bw = new BufferedWriter(new FileWriter(newpath1));
bw.write(sb1.toString());
bw.close();
bw = new BufferedWriter(new FileWriter(newpath2));
bw.write(sb2.toString());
bw.close();
JOptionPane.showMessageDialog(this, "处理完成!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
追问可以把项目压缩包传给我么?谢谢谢谢~~
追答就这一个类呀,还要跑压缩包做什么
用的啥开发工具?
如果用的Eclipse,新建一个Java Project,然后新建一个类Test.java,然后复制上面的代码到Test.java,然后右键run as java application。运行后会有一个窗口,单击“选择文件”按钮,选择你的文件,然后会给你提示处理结果。
如果没用什么开发工具,复制上面的代码保存为Test.java,然后将命令行窗口打开,cd到Test.java所在的目录,然后输入javac Test.java,然后再输入java Test,就行了。