package org.test;
/**
* @author chenpeng
**/
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestFrame extends javax.swing.JFrame {
// 变量声明
private javax.swing.JButton btnCreateAdd;
private javax.swing.JButton btnCreateD;
private javax.swing.JButton btnCreateMinus;
private javax.swing.JButton btnImport;
private javax.swing.JTextField insertText;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private static final long serialVersionUID = 1L;
private String fPath;
private String fileName;
// 变量声明结束
public TestFrame() {
initComponents(); // 初始化组件
checkState(); // 检查状态
}
void checkState() {
if (jLabel2.getText().length() == 0
|| "未选择文件".equals(this.jLabel2.getText())) {
this.btnCreateAdd.setEnabled(false);
this.btnCreateD.setEnabled(false);
this.btnCreateMinus.setEnabled(false);
} else {
this.btnCreateAdd.setEnabled(true);
this.btnCreateD.setEnabled(true);
this.btnCreateMinus.setEnabled(true);
}
}
void createTxt(int flag) throws IOException {
File file = null;
String title = "";
switch (flag) {
case 1: // a+1
title = "生成a+1.txt";
break;
case 2: // a-1
title = "生成a-1.txt";
break;
case 3: // d
if ("".equals(this.insertText.getText())
|| this.insertText.getText().length() == 0) {
JOptionPane.showMessageDialog(null, "请输入要追加的字符串!", this
.getTitle(), JOptionPane.ERROR_MESSAGE);
this.insertText.requestFocus();
return;
}
title = "生成d.txt";
break;
default:
}
file = new File(fPath.concat("\\" + title));
file.createNewFile();
FileReader reader = new FileReader(new File(fileName)); // 读取选中文件
BufferedReader in = new BufferedReader(reader);
FileWriter writer = new FileWriter(file); // 创建输出文件
BufferedWriter out = new BufferedWriter(writer);
String line;
while ((line = in.readLine()) != null) {
if (flag > 0 && flag < 3) { // 当为+1或-1时
if (isNumeric(line)) {
// 判定+,-并返回结果
int result = (flag == 1) ? Integer.parseInt(line) + 1
: Integer.parseInt(line) - 1;
out.write(result + "\r\n");
} else {
out.write(line + "\r\n");
}
} else if (flag == 3) { // 当为追加字符时
out.write(line + this.insertText.getText() + "\r\n");
}
}
in.close();
out.flush();
out.close();
JOptionPane.showMessageDialog(null, "已生成".concat(title), this
.getTitle(), JOptionPane.INFORMATION_MESSAGE);
}
/**
* 数字验证
*
* @param str
* @return
*/
boolean isNumeric(String str) {
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher(str);
if (!isNum.matches()) {
return false;
}
return true;
}
private void initComponents() {
btnCreateD = new javax.swing.JButton();
btnCreateMinus = new javax.swing.JButton();
btnCreateAdd = new javax.swing.JButton();
btnImport = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
insertText = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
getContentPane().setLayout(null);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
btnCreateD.setText("生成d.txt");
btnCreateD.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCreateDActionPerformed(evt);
}
});
getContentPane().add(btnCreateD);
btnCreateD.setBounds(340, 140, 89, 25);
btnCreateMinus.setText("生成a-1.txt");
btnCreateMinus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCreateMinusActionPerformed(evt);
}
});
getContentPane().add(btnCreateMinus);
btnCreateMinus.setBounds(230, 140, 101, 25);
btnCreateAdd.setText("生成a+1.txt");
btnCreateAdd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCreateAddActionPerformed(evt);
}
});
getContentPane().add(btnCreateAdd);
btnCreateAdd.setBounds(120, 140, 101, 25);
btnImport.setText("导入a.txt");
btnImport.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnImportActionPerformed(evt);
}
});
getContentPane().add(btnImport);
btnImport.setBounds(20, 140, 89, 25);
jLabel1.setFont(new java.awt.Font("宋体", 1, 14));
jLabel1.setText("文件路径");
getContentPane().add(jLabel1);
jLabel1.setBounds(20, 30, 75, 16);
jLabel3.setFont(new java.awt.Font("宋体", 1, 14));
jLabel3.setText("追加字符");
getContentPane().add(jLabel3);
jLabel3.setBounds(20, 70, 75, 20);
getContentPane().add(insertText);
insertText.setBounds(120, 70, 210, 20);
jLabel2.setText("未选择文件");
getContentPane().add(jLabel2);
jLabel2.setBounds(120, 30, 210, 15);
pack();
setSize(455, 220);
setTitle("文本操作Test");
setResizable(false);
}
/**
* d.txt按钮事件监听
*
* @param evt
*/
private void btnCreateDActionPerformed(java.awt.event.ActionEvent evt) {
try {
createTxt(3);
} catch (IOException ex) {
ex.printStackTrace();
}
}
/**
* a-1按钮事件监听
*
* @param evt
*/
private void btnCreateMinusActionPerformed(java.awt.event.ActionEvent evt) {
try {
createTxt(2);
} catch (IOException ex) {
ex.printStackTrace();
}
}
/**
* a+1按钮事件监听
*
* @param evt
*/
private void btnCreateAddActionPerformed(java.awt.event.ActionEvent evt) {
try {
createTxt(1);
} catch (IOException ex) {
ex.printStackTrace();
}
}
/**
* 导入按钮事件监听
*
* @param evt
*/
private void btnImportActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(this);
if (returnVal == javax.swing.JFileChooser.APPROVE_OPTION) {
fileName = chooser.getSelectedFile().getPath();
String fName = chooser.getSelectedFile().getName();
this.fPath = fileName.replace(fName, "");
if ("a.txt".equals(fName.toLowerCase())) {
jLabel2.setText(fileName);
} else {
JOptionPane.showMessageDialog(null, "文件名不符合要求!", this
.getTitle(), JOptionPane.ERROR_MESSAGE);
return;
}
}
checkState(); // 检查状态
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TestFrame().setVisible(true);
}
});
}
}
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela