Skip to content

Commit e306439

Browse files
committed
优化文件重命名工具
1 parent f8f883b commit e306439

3 files changed

Lines changed: 70 additions & 29 deletions

File tree

src/main/java/com/xwintop/xJavaFxTool/controller/littleTools/FileRenameToolController.java

Lines changed: 58 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import com.xwintop.xJavaFxTool.services.littleTools.FileRenameToolService;
44
import com.xwintop.xJavaFxTool.utils.JavaFxViewUtil;
55
import com.xwintop.xJavaFxTool.view.littleTools.FileRenameToolView;
6-
import com.xwintop.xcore.util.javafx.AlertUtil;
76
import com.xwintop.xcore.util.javafx.FileChooserUtil;
7+
import com.xwintop.xcore.util.javafx.TooltipUtil;
88
import javafx.collections.FXCollections;
99
import javafx.collections.ObservableList;
1010
import javafx.event.ActionEvent;
@@ -19,6 +19,7 @@
1919
import java.util.HashMap;
2020
import java.util.Map;
2121
import java.util.ResourceBundle;
22+
2223
/**
2324
* @ClassName: FileRenameToolController
2425
* @Description: 文件重命名工具
@@ -36,14 +37,13 @@ public class FileRenameToolController extends FileRenameToolView {
3637

3738
@Override
3839
public void initialize(URL location, ResourceBundle resources) {
39-
AlertUtil.showInfoAlert("该工具未完善,谢谢!!!");
4040
initView();
4141
initEvent();
4242
initService();
4343
}
4444

4545
private void initView() {
46-
JavaFxViewUtil.setTableColumnMapValueFactory(orderTableColumn, "order",false);
46+
JavaFxViewUtil.setTableColumnMapValueFactory(orderTableColumn, "order", false);
4747
JavaFxViewUtil.setTableColumnMapValueFactory(ruleTableColumn, "rule");
4848
JavaFxViewUtil.setTableColumnMapValueFactory(explainTableColumn, "explain");
4949
ruleTableView.setItems(ruleTableData);
@@ -53,6 +53,8 @@ private void initView() {
5353
JavaFxViewUtil.setTableColumnMapValueFactory(errorInfoTableColumn, "errorInfo");
5454
JavaFxViewUtil.setTableColumnMapValueFactory(filesPathTableColumn, "filesPath");
5555
fileInfoTableView.setItems(fileInfoTableData);
56+
57+
JavaFxViewUtil.setSpinnerValueFactory(startNumberOfRenameTab, 0, Integer.MAX_VALUE, 0);
5658
}
5759

5860
private void initEvent() {
@@ -67,11 +69,11 @@ private void addFileAction(ActionEvent event) {
6769
File file = FileChooserUtil.chooseFile();
6870
if (file != null) {
6971
Map<String, String> dataRow = new HashMap<String, String>();
70-
dataRow.put("status","true");
71-
dataRow.put("fileName",file.getName());
72-
dataRow.put("newFileName","");
73-
dataRow.put("errorInfo","");
74-
dataRow.put("filesPath",file.getPath());
72+
dataRow.put("status", "true");
73+
dataRow.put("fileName", file.getName());
74+
dataRow.put("newFileName", "");
75+
dataRow.put("errorInfo", "");
76+
dataRow.put("filesPath", file.getPath());
7577
fileInfoTableData.add(dataRow);
7678
}
7779
}
@@ -82,11 +84,11 @@ private void addFolderAction(ActionEvent event) {
8284
if (folderFile != null) {
8385
for (File file : FileUtils.listFiles(folderFile, null, false)) {
8486
Map<String, String> dataRow = new HashMap<String, String>();
85-
dataRow.put("status","true");
86-
dataRow.put("fileName",file.getName());
87-
dataRow.put("newFileName","");
88-
dataRow.put("errorInfo","");
89-
dataRow.put("filesPath",file.getPath());
87+
dataRow.put("status", "true");
88+
dataRow.put("fileName", file.getName());
89+
dataRow.put("newFileName", "");
90+
dataRow.put("errorInfo", "");
91+
dataRow.put("filesPath", file.getPath());
9092
fileInfoTableData.add(dataRow);
9193
}
9294
}
@@ -98,14 +100,25 @@ private void previewAction(ActionEvent event) {
98100

99101
@FXML
100102
private void renameAction(ActionEvent event) {
103+
for (Map<String, String> fileInfoTableDatum : fileInfoTableData) {
104+
if ("true".equals(fileInfoTableDatum.get("status"))) {
105+
File file = new File(fileInfoTableDatum.get("filesPath"));
106+
File newFile = new File(file.getParent(), fileInfoTableDatum.get("newFileName"));
107+
file.renameTo(newFile);
108+
fileInfoTableDatum.put("fileName", newFile.getName());
109+
fileInfoTableDatum.put("filesPath", newFile.getPath());
110+
}
111+
}
112+
fileInfoTableView.refresh();
113+
TooltipUtil.showToast("重命名成功!");
101114
}
102115

103116
@FXML
104117
private void addRoleTableAction(ActionEvent event) {
105118
Map<String, String> dataRow = new HashMap<String, String>();
106-
dataRow.put("order","true");
107-
dataRow.put("rule","true");
108-
dataRow.put("explain","true");
119+
dataRow.put("order", "true");
120+
dataRow.put("rule", "true");
121+
dataRow.put("explain", "true");
109122
ruleTableData.add(dataRow);
110123
}
111124

@@ -121,4 +134,33 @@ private void upRuleTableAction(ActionEvent event) {
121134
@FXML
122135
private void downRuleTableAction(ActionEvent event) {
123136
}
137+
138+
public void generateRenameDestFilesOfFormat() {
139+
if (!fileInfoTableData.isEmpty()) {
140+
int startNumber = startNumberOfRenameTab.getValue();
141+
String filePrefixString = filePrefixTextField.getText().trim();
142+
String filePostfixString = filePostfixTextField.getText().trim();
143+
for (Map<String, String> fileInfoTableDatum : fileInfoTableData) {
144+
String fileName = fileInfoTableDatum.get("fileName");
145+
fileInfoTableDatum.put("newFileName", filePrefixString + fileName + (startNumber++) + filePostfixString);
146+
}
147+
fileInfoTableView.refresh();
148+
}
149+
}
150+
151+
public void generateRenameDestFilesOfReplace() {
152+
for (Map<String, String> fileInfoTableDatum : fileInfoTableData) {
153+
String fileName = fileInfoTableDatum.get("fileName");
154+
fileInfoTableDatum.put("newFileName", fileName.replaceAll(fileQueryStringOfRenameTab.getText().trim(), fileReplaceStringOfRenameTab.getText().trim()));
155+
}
156+
fileInfoTableView.refresh();
157+
}
158+
159+
public void generateRenameDestFilesOfAddable() {
160+
for (Map<String, String> fileInfoTableDatum : fileInfoTableData) {
161+
String fileName = fileInfoTableDatum.get("fileName");
162+
fileInfoTableDatum.put("newFileName", filePrefixAddableText.getText().trim() + fileName + filePostfixAddableText.getText().trim());
163+
}
164+
fileInfoTableView.refresh();
165+
}
124166
}

src/main/java/com/xwintop/xJavaFxTool/view/littleTools/FileRenameToolView.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
import javafx.fxml.FXML;
44
import javafx.fxml.Initializable;
5-
import javafx.scene.control.Button;
6-
import javafx.scene.control.TableColumn;
7-
import javafx.scene.control.TableView;
8-
import javafx.scene.control.TextField;
5+
import javafx.scene.control.*;
96
import lombok.Getter;
107
import lombok.Setter;
118

@@ -57,7 +54,7 @@ public abstract class FileRenameToolView implements Initializable {
5754
@FXML
5855
protected TextField filePostfixTextField;
5956
@FXML
60-
protected TextField startNumberOfRenameTab;
57+
protected Spinner<Integer> startNumberOfRenameTab;
6158
@FXML
6259
protected TextField fileQueryStringOfRenameTab;
6360
@FXML

src/main/resources/com/xwintop/xJavaFxTool/fxmlView/littleTools/FileRenameTool.fxml

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<?import javafx.geometry.Insets?>
44
<?import javafx.scene.control.Button?>
55
<?import javafx.scene.control.Label?>
6+
<?import javafx.scene.control.Spinner?>
67
<?import javafx.scene.control.SplitPane?>
78
<?import javafx.scene.control.TableColumn?>
89
<?import javafx.scene.control.TableView?>
@@ -12,7 +13,7 @@
1213
<?import javafx.scene.layout.HBox?>
1314
<?import javafx.scene.layout.VBox?>
1415

15-
<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.xwintop.xJavaFxTool.controller.littleTools.FileRenameToolController">
16+
<AnchorPane prefHeight="453.0" prefWidth="748.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.xwintop.xJavaFxTool.controller.littleTools.FileRenameToolController">
1617
<children>
1718
<BorderPane layoutX="154.0" layoutY="100.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="10.0">
1819
<top>
@@ -36,23 +37,24 @@
3637
<HBox alignment="CENTER_LEFT" spacing="5.0">
3738
<children>
3839
<Label text="格式化:" />
39-
<TextField fx:id="filePrefixTextField" promptText="文件前缀" />
40-
<TextField fx:id="filePostfixTextField" promptText="文件后缀" />
41-
<TextField fx:id="startNumberOfRenameTab" promptText="开始数字" />
40+
<TextField fx:id="filePrefixTextField" onKeyReleased="#generateRenameDestFilesOfFormat" promptText="文件前缀" />
41+
<TextField fx:id="filePostfixTextField" onKeyReleased="#generateRenameDestFilesOfFormat" promptText="文件后缀" />
42+
<Label text="开始数字:" />
43+
<Spinner fx:id="startNumberOfRenameTab" />
4244
</children>
4345
</HBox>
4446
<HBox alignment="CENTER_LEFT" spacing="5.0">
4547
<children>
4648
<Label text="替换文本:" />
47-
<TextField fx:id="fileQueryStringOfRenameTab" promptText="查找" />
48-
<TextField fx:id="fileReplaceStringOfRenameTab" promptText="替换成" />
49+
<TextField fx:id="fileQueryStringOfRenameTab" onKeyReleased="#generateRenameDestFilesOfReplace" promptText="查找" />
50+
<TextField fx:id="fileReplaceStringOfRenameTab" onKeyReleased="#generateRenameDestFilesOfReplace" promptText="替换成" />
4951
</children>
5052
</HBox>
5153
<HBox alignment="CENTER_LEFT" spacing="5.0">
5254
<children>
5355
<Label text="添加文本:" />
54-
<TextField fx:id="filePrefixAddableText" promptText="文件名称之前内容" />
55-
<TextField fx:id="filePostfixAddableText" promptText="文件名称之后内容" />
56+
<TextField fx:id="filePrefixAddableText" onKeyReleased="#generateRenameDestFilesOfAddable" promptText="文件名称之前内容" />
57+
<TextField fx:id="filePostfixAddableText" onKeyReleased="#generateRenameDestFilesOfAddable" promptText="文件名称之后内容" />
5658
</children>
5759
</HBox>
5860
</children>

0 commit comments

Comments
 (0)