2023年4月27日17:44:23
parent
aa732af9a4
commit
92ebe9506e
|
|
@ -0,0 +1,150 @@
|
|||
package com.zhangmeng.tools.controller;
|
||||
|
||||
import com.zhangmeng.tools.utils.AlertUtils;
|
||||
import javafx.beans.value.ChangeListener;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.TextArea;
|
||||
import javafx.scene.control.TextField;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.*;
|
||||
import java.nio.file.attribute.BasicFileAttributes;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/**
|
||||
* @author : 芊芊墨客
|
||||
* @version : 1.0
|
||||
* @date : 2023-04-27 10:24
|
||||
*/
|
||||
@Slf4j
|
||||
public class BatchUpdateFileNameController {
|
||||
|
||||
@FXML
|
||||
public TextField dir;
|
||||
|
||||
@FXML
|
||||
public TextArea result_show;
|
||||
|
||||
@FXML
|
||||
public Button replace_button;
|
||||
|
||||
@FXML
|
||||
public TextField replace_str;
|
||||
|
||||
@FXML
|
||||
public TextField replace_after;
|
||||
|
||||
@FXML
|
||||
public void initialize() {
|
||||
|
||||
dir.textProperty().addListener((observable, oldValue, newValue) -> {
|
||||
if (newValue != null) {
|
||||
getFileInfos(newValue);
|
||||
}
|
||||
});
|
||||
|
||||
replace_button.setOnAction(event -> {
|
||||
if (dir.getText().length() == 0) {
|
||||
AlertUtils.alert_warning("请选择替换的文件夹");
|
||||
return;
|
||||
}
|
||||
if (replace_str.getText().length() == 0) {
|
||||
AlertUtils.alert_warning("请输入替换的文字");
|
||||
return;
|
||||
}
|
||||
|
||||
if (replace_after.getText().length() == 0) {
|
||||
replace_after.setText("");
|
||||
}
|
||||
getFileInfos(dir.getText(), replace_str.getText(), replace_after.getText());
|
||||
});
|
||||
}
|
||||
|
||||
public void getFileInfos(String path_name) {
|
||||
Path path = Paths.get(path_name);
|
||||
AtomicInteger dirCount = new AtomicInteger();
|
||||
AtomicInteger fileCount = new AtomicInteger();
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.append(System.lineSeparator());
|
||||
try {
|
||||
Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
|
||||
@Override
|
||||
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
|
||||
stringBuilder.append(dir);
|
||||
stringBuilder.append(System.lineSeparator());
|
||||
dirCount.incrementAndGet();
|
||||
return super.preVisitDirectory(dir, attrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
|
||||
stringBuilder.append(file);
|
||||
stringBuilder.append(System.lineSeparator());
|
||||
fileCount.incrementAndGet();
|
||||
return super.visitFile(file, attrs);
|
||||
}
|
||||
});
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
stringBuilder.append("文件夹数:").append(dirCount);
|
||||
stringBuilder.append(System.lineSeparator());
|
||||
stringBuilder.append("文件数:").append(fileCount);
|
||||
stringBuilder.append(System.lineSeparator());
|
||||
result_show.setText(stringBuilder.toString());
|
||||
}
|
||||
|
||||
public void getFileInfos(String path_name, String replace, String replace_after) {
|
||||
Path path = Paths.get(path_name);
|
||||
AtomicInteger dirCount = new AtomicInteger();
|
||||
AtomicInteger fileCount = new AtomicInteger();
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.append(System.lineSeparator());
|
||||
try {
|
||||
Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
|
||||
@Override
|
||||
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
|
||||
dir.toString().replace(replace, replace_after);
|
||||
stringBuilder.append(dir);
|
||||
stringBuilder.append(System.lineSeparator());
|
||||
dirCount.incrementAndGet();
|
||||
return super.preVisitDirectory(dir, attrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
|
||||
String name = file.toString().replace(replace,replace_after);
|
||||
copy_del_file(file,Paths.get(name));
|
||||
stringBuilder.append(name);
|
||||
stringBuilder.append(System.lineSeparator());
|
||||
fileCount.incrementAndGet();
|
||||
return super.visitFile(file, attrs);
|
||||
}
|
||||
});
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
stringBuilder.append("文件夹数:").append(dirCount);
|
||||
stringBuilder.append(System.lineSeparator());
|
||||
stringBuilder.append("文件数:").append(fileCount);
|
||||
stringBuilder.append(System.lineSeparator());
|
||||
result_show.setText(stringBuilder.toString());
|
||||
}
|
||||
|
||||
|
||||
public void copy_del_file(Path source,Path target){
|
||||
try {
|
||||
if (!Files.exists(target)){
|
||||
Files.createFile(target);
|
||||
}
|
||||
Files.copy(source, target,StandardCopyOption.REPLACE_EXISTING);//如果文件存在则覆盖
|
||||
Files.delete(source);//拷贝完删除源文件
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -542,4 +542,8 @@ public class HomeController implements Serializable {
|
|||
}
|
||||
jks_file(flag);
|
||||
}
|
||||
|
||||
public void batch_update_file_name_menu_item(ActionEvent event) {
|
||||
load_small_tools(14);
|
||||
}
|
||||
}
|
||||
|
|
@ -81,6 +81,7 @@ public class SmallToolsController {
|
|||
private AnchorPane word_ocr;
|
||||
private AnchorPane bar_code;
|
||||
private AnchorPane pdf_ocr;
|
||||
private AnchorPane batch_update_file_name;
|
||||
|
||||
@FXML
|
||||
private ListView<ResourcesUtils.SmallTools> listView;
|
||||
|
|
@ -416,6 +417,7 @@ public class SmallToolsController {
|
|||
case Word_ocr -> new Image(ImagePath.path(ImagePath.ImagePathType.Qr_CODE));
|
||||
case Bar_Code -> new Image(ImagePath.path(ImagePath.ImagePathType.Qr_CODE));
|
||||
case Pdf_Ocr -> new Image(ImagePath.path(ImagePath.ImagePathType.Qr_CODE));
|
||||
case BatchUpdateFileName -> new Image(ImagePath.path(ImagePath.ImagePathType.Qr_CODE));
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -686,6 +688,16 @@ public class SmallToolsController {
|
|||
common_method();
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void batch_update_file_name_menu_item(){
|
||||
boolean flag = false;
|
||||
if (batch_update_file_name != null){
|
||||
flag = true;
|
||||
}
|
||||
|
||||
batch_update_file_name(flag);
|
||||
}
|
||||
|
||||
public void pdf_ocr(boolean flag) {
|
||||
//默认选择第一个
|
||||
listView.getSelectionModel().select(13);
|
||||
|
|
@ -703,6 +715,25 @@ public class SmallToolsController {
|
|||
common_method();
|
||||
}
|
||||
|
||||
//batch_update_file_name
|
||||
@FXML
|
||||
public void batch_update_file_name(boolean flag) {
|
||||
//默认选择第一个
|
||||
listView.getSelectionModel().select(14);
|
||||
|
||||
if (!flag) {
|
||||
try {
|
||||
root = FXMLLoader.load(ResourcesUtils.getResource("batch_update_file_name"));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
batch_update_file_name = root;
|
||||
} else {
|
||||
root = batch_update_file_name;
|
||||
}
|
||||
common_method();
|
||||
}
|
||||
|
||||
|
||||
private void common_method() {
|
||||
splitPane.getItems().remove(1);
|
||||
|
|
@ -820,11 +851,11 @@ public class SmallToolsController {
|
|||
ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView");
|
||||
listView.getSelectionModel().select(index);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void socket_server_menu_item(ActionEvent event) {
|
||||
load_server_tools(3);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void telephone_menu_item(ActionEvent event) {
|
||||
boolean flag = false;
|
||||
if (telephone != null){
|
||||
|
|
@ -832,12 +863,12 @@ public class SmallToolsController {
|
|||
}
|
||||
telephone(flag);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void mybatis_plus_gen_menu_item(ActionEvent event) {
|
||||
|
||||
load_mysql_tools(1);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void JsonView_menu_item(ActionEvent event) {
|
||||
boolean flag =false;
|
||||
if (json_view != null){
|
||||
|
|
@ -845,7 +876,7 @@ public class SmallToolsController {
|
|||
}
|
||||
json_view(flag);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void maven_jar_install_menu_item(ActionEvent event) {
|
||||
boolean flag =false;
|
||||
if (maven_install_jar != null){
|
||||
|
|
@ -854,5 +885,29 @@ public class SmallToolsController {
|
|||
maven_install_jar(flag);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void word_ocr_menu_item(ActionEvent event) {
|
||||
boolean flag =false;
|
||||
if (word_ocr != null){
|
||||
flag = true;
|
||||
}
|
||||
word_ocr(flag);
|
||||
}
|
||||
@FXML
|
||||
public void bar_code_menu_item(ActionEvent event) {
|
||||
boolean flag =false;
|
||||
if (bar_code != null){
|
||||
flag = true;
|
||||
}
|
||||
bar_code(flag);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void pdf_menu_item(ActionEvent event) {
|
||||
boolean flag =false;
|
||||
if (pdf_ocr != null){
|
||||
flag = true;
|
||||
}
|
||||
pdf_ocr(flag);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@ public class ResourcesUtils {
|
|||
Word_ocr("文字识别ocr",11),
|
||||
Bar_Code("条形码识别",12),
|
||||
Pdf_Ocr("pdf识别",13),
|
||||
BatchUpdateFileName("批量修改文件名",14),
|
||||
;
|
||||
|
||||
SmallTools(String title, int index) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.control.TextArea?>
|
||||
<?import javafx.scene.control.TextField?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
|
||||
|
||||
<AnchorPane prefHeight="649.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.zhangmeng.tools.controller.BatchUpdateFileNameController">
|
||||
<children>
|
||||
<Label layoutX="134.0" layoutY="117.0" text="批量修改的文件夹:" />
|
||||
<TextField fx:id="dir" layoutX="252.0" layoutY="113.0" prefHeight="25.0" prefWidth="293.0" />
|
||||
<TextArea fx:id="result_show" layoutX="252.0" layoutY="190.0" prefHeight="311.0" prefWidth="820.0" AnchorPane.bottomAnchor="148.0" AnchorPane.leftAnchor="252.0" AnchorPane.rightAnchor="128.0" AnchorPane.topAnchor="190.0" />
|
||||
<Label layoutX="168.0" layoutY="190.0" text="处理结果:" />
|
||||
<Button fx:id="replace_button" layoutX="1017.0" layoutY="113.0" mnemonicParsing="false" text="替换" />
|
||||
<Label layoutX="569.0" layoutY="117.0" text="替换的字符:" />
|
||||
<TextField fx:id="replace_str" layoutX="645.0" layoutY="113.0" prefHeight="25.0" prefWidth="106.0" />
|
||||
<TextField fx:id="replace_after" layoutX="870.0" layoutY="113.0" prefHeight="25.0" prefWidth="113.0" />
|
||||
<Label layoutX="779.0" layoutY="117.0" text="替换后的字符:" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
|
@ -46,6 +46,7 @@
|
|||
<MenuItem mnemonicParsing="false" text="word-ocr" onAction="#word_ocr_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="条形码识别" onAction="#bar_code_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="pdf识别" onAction="#pdf_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="批量修改文件名" onAction="#batch_update_file_name_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,10 @@
|
|||
<MenuItem mnemonicParsing="false" text="手机号工具" onAction="#telephone_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="JsonView" onAction="#JsonView_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="maven-jar-install" onAction="#maven_jar_install_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="word-ocr" onAction="#word_ocr_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="条形码识别" onAction="#bar_code_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="pdf识别" onAction="#pdf_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="批量修改文件名" onAction="#batch_update_file_name_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue