【运行截图】

【核心代码】
1 import java.awt.BorderLayout; 2 3 import java.awt.EventQueue; 4 5 import java.awt.GridLayout; 6 7 import java.awt.event.ActionEvent; 8 9 import java.awt.event.ActionListener; 10 11 import java.io.File; 12 13 import javax.swing.JButton; 14 15 import javax.swing.JCheckBox; 16 17 import javax.swing.JFileChooser; 18 19 import javax.swing.JFrame; 20 21 import javax.swing.JLabel; 22 23 import javax.swing.JOptionPane; 24 25 import javax.swing.JPanel; 26 27 import javax.swing.JScrollPane; 28 29 import javax.swing.JTextArea; 30 31 import javax.swing.JTextField; 32 33 import javax.swing.border.EmptyBorder; 34 35 import java.awt.event.ItemListener; 36 37 import java.awt.event.ItemEvent; 38 39 public class RenameTool extends JFrame { 40 /** 41 42 * 43 44 */ 45 46 private static final long serialVersionUID = 9068225199875097200L; 47 48 private JPanel contentPane; 49 50 private JTextField selectTextField; 51 52 private JTextField beforeCutTextField; 53 54 private JTextField afterCutTextField; 55 56 private JTextField beforeReplaceTextField; 57 58 private JTextField afterReplaceTextField; 59 60 private JTextField fileTypeTextField; 61 62 private JCheckBox choiceCheckBox; 63 64 private JButton renameButton; 65 66 private File[] selectFiles; 67 68 private JTextArea textArea; 69 70 /** 71 72 * Launch the application. 73 74 */ 75 76 public static void main(String[] args) { 77 EventQueue.invokeLater(new Runnable() { 78 public void run() { 79 try { 80 RenameTool frame = new RenameTool(); 81 82 frame.setVisible(true); 83 84 } catch (Exception e) { 85 e.printStackTrace(); 86 87 } 88 89 } 90 91 }); 92 93 } 94 95 /** 96 97 * Create the frame. 98 99 */ 100 101 public RenameTool() { 102 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 103 104 setBounds(100, 100, 450, 300); 105 106 contentPane = new JPanel(); 107 108 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 109 110 contentPane.setLayout(new BorderLayout(0, 0)); 111 112 setContentPane(contentPane); 113 114 JPanel controlPanel = new JPanel(); 115 116 contentPane.add(controlPanel, BorderLayout.NORTH); 117 118 controlPanel.setLayout(new GridLayout(4, 1, 5, 5)); 119 120 JPanel selectPanel = new JPanel(); 121 122 controlPanel.add(selectPanel); 123 124 JLabel selectLabel = new JLabel("选择的文件夹:"); 125 126 selectPanel.add(selectLabel); 127 128 selectTextField = new JTextField(); 129 130 selectPanel.add(selectTextField); 131 132 selectTextField.setColumns(18); 133 134 JButton selectButton = new JButton("选择文件夹"); 135 136 selectButton.addActionListener(new ActionListener() { 137 public void actionPerformed(ActionEvent e) { 138 do_selectButton_actionPerformed(e); 139 140 } 141 142 }); 143 144 selectPanel.add(selectButton); 145 146 JPanel cutPanel = new JPanel(); 147 148 controlPanel.add(cutPanel); 149 150 JLabel beforeCutLabel = new JLabel("截取前字符:"); 151 152 cutPanel.add(beforeCutLabel); 153 154 beforeCutTextField = new JTextField(); 155 156 cutPanel.add(beforeCutTextField); 157 158 beforeCutTextField.setColumns(10); 159 160 JLabel afterCutLabel = new JLabel("截取后字符:"); 161 162 cutPanel.add(afterCutLabel); 163 164 afterCutTextField = new JTextField(); 165 166 cutPanel.add(afterCutTextField); 167 168 afterCutTextField.setColumns(10); 169 170 JPanel replacePanel = new JPanel(); 171 172 controlPanel.add(replacePanel); 173 174 JLabel beforeReplaceLabel = new JLabel("替换前字符:"); 175 176 replacePanel.add(beforeReplaceLabel); 177 178 beforeReplaceTextField = new JTextField(); 179 180 replacePanel.add(beforeReplaceTextField); 181 182 beforeReplaceTextField.setColumns(10); 183 184 JLabel afterReplaceLabel = new JLabel("替换后字符:"); 185 186 replacePanel.add(afterReplaceLabel); 187 188 afterReplaceTextField = new JTextField(); 189 190 replacePanel.add(afterReplaceTextField); 191 192 afterReplaceTextField.setColumns(10); 193 194 JPanel otherPanel = new JPanel(); 195 196 controlPanel.add(otherPanel); 197 198 JLabel fileTypeLabel = new JLabel("文件类型:"); 199 200 otherPanel.add(fileTypeLabel); 201 202 fileTypeTextField = new JTextField(); 203 204 otherPanel.add(fileTypeTextField); 205 206 fileTypeTextField.setColumns(17); 207 208 choiceCheckBox = new JCheckBox("预览"); 209 210 choiceCheckBox.addItemListener(new ItemListener() { 211 public void itemStateChanged(ItemEvent e) { 212 do_choiceCheckBox_itemStateChanged(e); 213 214 } 215 216 }); 217 218 otherPanel.add(choiceCheckBox); 219 220 renameButton = new JButton("预览"); 221 222 renameButton.addActionListener(new ActionListener() { 223 public void actionPerformed(ActionEvent e) { 224 do_renameButton_actionPerformed(e); 225 226 } 227 228 }); 229 230 otherPanel.add(renameButton); 231 232 JScrollPane scrollPane = new JScrollPane(); 233 234 contentPane.add(scrollPane, BorderLayout.CENTER); 235 236 textArea = new JTextArea(); 237 238 scrollPane.setViewportView(textArea); 239 240 } 241 242 protected void do_selectButton_actionPerformed(ActionEvent e) { 243 JFileChooser chooser = new JFileChooser(); 244 245 chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 246 247 chooser.setMultiSelectionEnabled(false); 248 249 int result = chooser.showOpenDialog(this); 250 251 if (result == JFileChooser.APPROVE_OPTION) { 252 File directory = chooser.getSelectedFile(); 253 254 selectTextField.setText(directory.getAbsolutePath()); 255 256 selectFiles = directory.listFiles(); 257 258 for (File selectFile : selectFiles) { 259 textArea.append(selectFile.getAbsolutePath() "\n\r"); 260 261 } 262 263 } 264 265 } 266 267 protected void do_choiceCheckBox_itemStateChanged(ItemEvent e) { 268 if (choiceCheckBox.isSelected()) { 269 choiceCheckBox.setText("重命名"); 270 271 renameButton.setText("重命名"); 272 273 } else { 274 choiceCheckBox.setText("预览"); 275 276 renameButton.setText("预览"); 277 278 } 279 280 } 281 282 protected void do_renameButton_actionPerformed(ActionEvent e) { 283 String beforeCut = beforeCutTextField.getText();// 获得截取前字符串 284 285 String afterCut = afterCutTextField.getText();// 获得截取后字符串 286 287 String beforeReplace = beforeReplaceTextField.getText();// 获得替换前字符串 288 289 String afterReplace = afterReplaceTextField.getText();// 获得替换后字符串 290 291 String fileType = fileTypeTextField.getText();// 获得文件类型 292 293 if (selectFiles == null) { 294 JOptionPane.showMessageDialog(this, "请选择文件所在文件夹!", "警告信息", JOptionPane.WARNING_MESSAGE); 295 296 return; 297 298 } 299 300 if (selectFiles.length == 0) { 301 JOptionPane.showMessageDialog(this, "选中文件夹为空文件夹!", "警告信息", JOptionPane.WARNING_MESSAGE); 302 303 return; 304 305 } 306 307 textArea.setText("");// 清空文本域中数据 308 309 for (File selectFile : selectFiles) { 310 String fileName = selectFile.getName();// 获得文件名 311 312 if (!beforeCut.isEmpty()) { 313 int beforeCutIndex = fileName.indexOf(beforeCut);// 获得截取前字符串索引位置 314 315 fileName = fileName.substring(beforeCutIndex beforeCut.length());// 截取字符串 316 317 } 318 319 if (!afterCut.isEmpty()) { 320 int afterCutIndex = fileName.lastIndexOf(afterCut);// 获得截取后字符串索引位置 321 322 fileName = fileName.substring(0, afterCutIndex);// 截取字符串 323 324 if (fileType.isEmpty()) { 325 JOptionPane.showMessageDialog(this, "请输入文件类型!", "警告信息", JOptionPane.WARNING_MESSAGE); 326 327 return; 328 329 } else { 330 if (fileType.contains(".")) {// 判断用户输入的文件类型是否包括“.” 331 332 fileName = fileName.concat(fileName);// 增加文件类型 333 334 } else { 335 fileName = fileName.concat("." fileType);// 增加文件类型 336 337 } 338 339 } 340 341 } else if (!fileType.isEmpty()) { 342 int fileTypeindex = fileName.lastIndexOf(".");// 获得文件类型索引位置 343 344 fileName = fileName.substring(0, fileTypeindex);// 截取文件类型 345 346 if (fileType.contains(".")) {// 判断用户输入的文件类型是否包括“.” 347 348 fileName = fileName.concat(fileName);// 增加文件类型 349 350 } else { 351 fileName = fileName.concat("." fileType);// 增加文件类型 352 353 } 354 355 } 356 357 if (!(beforeReplace.isEmpty() && afterReplace.isEmpty())) { 358 fileName = fileName.replace(beforeReplace, afterReplace);// 替换字符串 359 360 } 361 362 fileName = selectFile.getParent() File.separator fileName;// 获得修改后的文件名 363 364 if (choiceCheckBox.isSelected()) { 365 textArea.append(fileName "\n\r");// 在文本区中显示重命名的结果 366 367 selectFile.renameTo(new File(fileName));// 重命名文件 368 369 } else { 370 textArea.append(fileName "\n\r");// 重命名文件 371 372 } 373 374 } 375 376 } 377 378 }
浙公网安备 33010602011771号