import java.awt.Button;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JFileChooser;
public class win {
private Frame f;
private Button btn;
private TextField tf;
private TextArea ta;
private Label l;
private int count;
private Button chooseBtn;
private String path;// 句子文件路径
win() {
init();
}
public void init() {
f = new Frame("抽取程序");
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
f.setSize(screenSize.width, screenSize.height);
int fWidth = f.getWidth();
int fHeight = f.getHeight();
int screenWidth = screenSize.width;
int screenHeight = screenSize.height;
f.setLocation(screenWidth/2-fWidth/2, screenHeight/2-fHeight/2);
f.setLayout(new FlowLayout());
chooseBtn = new Button("点击选择被选择文件路径");
chooseBtn.setFont(new java.awt.Font("楷体", 1, 18));
//chooseBtn.setSize(30, 50);
l = new Label("请输入抽取个数:");
l.setFont(new java.awt.Font("楷体", 1, 18));
btn = new Button("抽取");
btn.setFont(new java.awt.Font("楷体", 1, 18));
ta = new TextArea(16,78);
tf = new TextField(2);
tf.setFont(new java.awt.Font("楷体", 1, 18));
ta.setEditable(false);
ta.setFont(new java.awt.Font("楷体", 1, 30));
f.add(chooseBtn);
f.add(l);
f.add(tf);
f.add(ta);
f.add(btn);
myEvent(ta);
f.setVisible(true);
}
public int getCount() {
return count;
}
private void myEvent(final TextArea ta) {
f.addWindowListener(new WindowListener() {
@Override
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
@Override
public void windowActivated(WindowEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void windowClosed(WindowEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void windowIconified(WindowEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void windowOpened(WindowEvent e) {
// TODO 自动生成的方法存根
}
});
chooseBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fc = new JFileChooser();
fc.setDialogTitle("请选择被抽取的文件...");
fc.setApproveButtonText("确定");
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
if (JFileChooser.APPROVE_OPTION == fc.showOpenDialog(null)) {
path = fc.getSelectedFile().getPath();
}
}
});
tf.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent arg0) {
// TODO 自动生成的方法存根
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO 自动生成的方法存根
}
@Override
public void keyPressed(KeyEvent e)
{
if(!(e.getKeyCode()>=KeyEvent.VK_0 && e.getKeyCode()<=KeyEvent.VK_9))
e.consume();//屏蔽键
if(e.getKeyCode()==KeyEvent.VK_ENTER)
btnClick();
if(e.getKeyCode()==KeyEvent.VK_BACK_SPACE){
String number = tf.getText();
String nNumber =new String(number.substring(0,number.length()-1));
tf.setText(nNumber);
}
}
});
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
btnClick();
}
});
}
public void btnClick() {
boolean firstRun = true;
count = Integer.parseInt(tf.getText());
List<String> list = null;
if(firstRun){
list = new ArrayList<String>();
try{
list = readFromFile();
}catch(IOException e1){
e1.printStackTrace();
}
}
firstRun = false;
Random random = new Random();
List<String> after_list = new ArrayList<String>();
List<Integer> numbers = new ArrayList<Integer>();
int number = 0;
while(numbers.size()<count){
String line = "";
number = random.nextInt(list.size());
if(!numbers.contains(number)){
numbers.add(number);
line += list.get(number) + "\r\n";
after_list.add(line);
}
}
try{
writeToFile(after_list);
}catch(IOException e1){
e1.printStackTrace();
}
ta.setText(toString(after_list));
}
private String toString(List<String> after_list) {
String content = "";
for (int i = 0; i < after_list.size(); i++)
content += after_list.get(i);
return content;
}
public List<String> readFromFile() throws IOException {
BufferedReader br = null;
List<String> list = new ArrayList<String>();
try {
br = new BufferedReader(new FileReader(path));
String line = null;
while ((line = br.readLine()) != null) {
list.add(line);
}
} catch (IOException e) {
throw new IOException("读入文件失败!");
} finally {
try {
if (br != null)
br.close();
} catch (IOException e) {
throw new IOException("关闭读取流失败!");
}
}
return list;
}
public void writeToFile(List<String> list) throws IOException {
File f = new File("抽取句子记录.txt");
if (!f.exists()) {
f.createNewFile();
}
PrintStream ps = new PrintStream(new BufferedOutputStream(
new FileOutputStream(f, true)));
try {
for (String s : list)
ps.write(s.getBytes());
} finally {
if (ps != null)
ps.close();
}
}
public static void main(String[] args) {
new win();
}
}
抽取句子程序
最新推荐文章于 2021-02-13 03:26:46 发布