Skip to content

Commit 22a3504

Browse files
committed
添加文件解压缩工具
1 parent 532e09d commit 22a3504

9 files changed

Lines changed: 202 additions & 5 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ xJavaFxTool是使用javaFx开发的实用小工具集,利用业余时间把工
105105
52. SealBuilderTool:印章生成工具
106106
53. BullsAndCowsGame:猜数字小游戏
107107
54. FileUnicodeTransformationTool:文件编码转换工具
108+
55. FileCompressTool:文件解压缩工具(目前支持ar、zip、tar、jar、cpio、7z、gz、bzip2、xz、lzma、pack200、deflate、snappy-framed、lz4-block、lz4-framed、zstd等格式解压缩)
108109

109110
传输工具目前支持功能如下:
110111

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package com.xwintop.xJavaFxTool.controller.littleTools;
2+
3+
import com.xwintop.xJavaFxTool.services.littleTools.FileCompressToolService;
4+
import com.xwintop.xJavaFxTool.view.littleTools.FileCompressToolView;
5+
import com.xwintop.xcore.util.javafx.FileChooserUtil;
6+
import javafx.event.ActionEvent;
7+
import javafx.fxml.FXML;
8+
import javafx.stage.FileChooser;
9+
import lombok.Getter;
10+
import lombok.Setter;
11+
import lombok.extern.slf4j.Slf4j;
12+
13+
import javax.swing.filechooser.FileSystemView;
14+
import java.io.File;
15+
import java.net.URL;
16+
import java.util.ArrayList;
17+
import java.util.List;
18+
import java.util.ResourceBundle;
19+
20+
import static org.apache.commons.compress.archivers.ArchiveStreamFactory.*;
21+
import static org.apache.commons.compress.compressors.CompressorStreamFactory.*;
22+
23+
/**
24+
* @ClassName: FileCompressToolController
25+
* @Description: 文件解压缩工具
26+
* @author: xufeng
27+
* @date: 2019/10/26 0026 19:17
28+
*/
29+
30+
@Getter
31+
@Setter
32+
@Slf4j
33+
public class FileCompressToolController extends FileCompressToolView {
34+
private FileCompressToolService fileCompressToolService = new FileCompressToolService(this);
35+
private String[] fileTypeChoiceBoxStrings = new String[]{"AUTO", AR, ZIP, TAR, JAR, CPIO, SEVEN_Z, GZIP, BZIP2, XZ, LZMA, PACK200, DEFLATE, SNAPPY_FRAMED, LZ4_BLOCK, LZ4_FRAMED, ZSTANDARD};
36+
37+
@Override
38+
public void initialize(URL location, ResourceBundle resources) {
39+
initView();
40+
initEvent();
41+
initService();
42+
}
43+
44+
private void initView() {
45+
fileTypeChoiceBox.getItems().addAll(fileTypeChoiceBoxStrings);
46+
fileTypeChoiceBox.getSelectionModel().select(2);
47+
}
48+
49+
private void initEvent() {
50+
FileChooserUtil.setOnDrag(selectFileTextField, FileChooserUtil.FileType.FOLDER);
51+
FileChooserUtil.setOnDrag(saveFilePathTextField, FileChooserUtil.FileType.FOLDER);
52+
}
53+
54+
private void initService() {
55+
}
56+
57+
@FXML
58+
private void selectFileAction(ActionEvent event) {
59+
List<File> files = null;
60+
try {
61+
FileChooser fileChooser = new FileChooser();
62+
fileChooser.setTitle("请选择文件");
63+
fileChooser.setInitialDirectory(FileSystemView.getFileSystemView().getHomeDirectory());
64+
files = fileChooser.showOpenMultipleDialog(null);
65+
} catch (NullPointerException e) {
66+
log.error("选择文件错误", e);
67+
}
68+
if (files != null) {
69+
List<String> strings = new ArrayList<>();
70+
for (File file : files) {
71+
strings.add(file.getPath());
72+
}
73+
selectFileTextField.setText(String.join("|", strings));
74+
}
75+
}
76+
77+
@FXML
78+
private void selectFolderAction(ActionEvent event) {
79+
File file = FileChooserUtil.chooseDirectory();
80+
if (file != null) {
81+
selectFileTextField.setText(file.getPath());
82+
}
83+
}
84+
85+
@FXML
86+
private void saveFilePathAction(ActionEvent event) {
87+
File file = FileChooserUtil.chooseDirectory();
88+
if (file != null) {
89+
saveFilePathTextField.setText(file.getPath());
90+
}
91+
}
92+
93+
@FXML
94+
private void compressAction(ActionEvent event) {
95+
fileCompressToolService.compressAction();
96+
}
97+
98+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.xwintop.xJavaFxTool.services.littleTools;
2+
3+
import com.xwintop.xJavaFxTool.controller.littleTools.FileCompressToolController;
4+
import lombok.Getter;
5+
import lombok.Setter;
6+
import lombok.extern.slf4j.Slf4j;
7+
8+
/**
9+
* @ClassName: FileCompressToolService
10+
* @Description: 文件解压缩工具
11+
* @author: xufeng
12+
* @date: 2019/10/26 0026 19:17
13+
*/
14+
15+
@Getter
16+
@Setter
17+
@Slf4j
18+
public class FileCompressToolService {
19+
private FileCompressToolController fileCompressToolController;
20+
21+
public FileCompressToolService(FileCompressToolController fileCompressToolController) {
22+
this.fileCompressToolController = fileCompressToolController;
23+
}
24+
25+
public void compressAction() {
26+
27+
}
28+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.xwintop.xJavaFxTool.view.littleTools;
2+
3+
import javafx.fxml.FXML;
4+
import javafx.fxml.Initializable;
5+
import javafx.scene.control.Button;
6+
import javafx.scene.control.CheckBox;
7+
import javafx.scene.control.ChoiceBox;
8+
import javafx.scene.control.TextField;
9+
import lombok.Getter;
10+
import lombok.Setter;
11+
12+
/**
13+
* @ClassName: FileCompressToolView
14+
* @Description: 文件解压缩工具
15+
* @author: xufeng
16+
* @date: 2019/10/26 0026 19:17
17+
*/
18+
19+
@Getter
20+
@Setter
21+
public abstract class FileCompressToolView implements Initializable {
22+
@FXML
23+
protected TextField selectFileTextField;
24+
@FXML
25+
protected Button selectFileButton;
26+
@FXML
27+
protected Button selectFolderButton;
28+
@FXML
29+
protected CheckBox compressCheckBox;
30+
@FXML
31+
protected Button compressButton;
32+
@FXML
33+
protected TextField saveFilePathTextField;
34+
@FXML
35+
protected Button saveFilePathButton;
36+
@FXML
37+
protected ChoiceBox fileTypeChoiceBox;
38+
39+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<?import javafx.scene.control.Button?>
4+
<?import javafx.scene.control.CheckBox?>
5+
<?import javafx.scene.control.ChoiceBox?>
6+
<?import javafx.scene.control.Label?>
7+
<?import javafx.scene.control.TextField?>
8+
<?import javafx.scene.layout.AnchorPane?>
9+
10+
<AnchorPane prefHeight="400.0" prefWidth="702.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.xwintop.xJavaFxTool.controller.littleTools.FileCompressToolController">
11+
<children>
12+
<Label layoutX="31.0" layoutY="24.0" text="文件选择:" />
13+
<TextField fx:id="selectFileTextField" layoutX="99.0" layoutY="20.0" promptText="可选择目录或多个文件" />
14+
<Button fx:id="selectFileButton" layoutX="274.0" layoutY="20.0" mnemonicParsing="false" onAction="#selectFileAction" text="选择文件" />
15+
<Button fx:id="selectFolderButton" layoutX="351.0" layoutY="20.0" mnemonicParsing="false" onAction="#selectFolderAction" text="选择文件夹" />
16+
<Label layoutX="140.0" layoutY="82.0" text="文件压缩类型:" />
17+
<CheckBox fx:id="compressCheckBox" layoutX="39.0" layoutY="82.0" mnemonicParsing="false" selected="true" text="压缩" />
18+
<Button fx:id="compressButton" layoutX="331.0" layoutY="229.0" mnemonicParsing="false" onAction="#compressAction" text="开始" />
19+
<Label layoutX="29.0" layoutY="159.0" text="输出文件夹:" />
20+
<TextField fx:id="saveFilePathTextField" layoutX="101.0" layoutY="155.0" promptText="留空为原文件同目录" />
21+
<Button fx:id="saveFilePathButton" layoutX="266.0" layoutY="155.0" mnemonicParsing="false" onAction="#saveFilePathAction" text="选择" />
22+
<ChoiceBox fx:id="fileTypeChoiceBox" layoutX="236.0" layoutY="78.0" />
23+
</children>
24+
</AnchorPane>

src/main/resources/config/toolFxmlLoaderConfiguration.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,12 @@
309309
<url>/com/xwintop/xJavaFxTool/fxmlView/codeTools/FileUnicodeTransformationTool.fxml</url>
310310
<title>FileUnicodeTransformationTool</title>
311311
<menuParentId>codeTools</menuParentId>
312-
<isDefaultShow></isDefaultShow>
312+
</ToolFxmlLoaderConfiguration>
313+
<ToolFxmlLoaderConfiguration>
314+
<url>/com/xwintop/xJavaFxTool/fxmlView/littleTools/FileCompressTool.fxml</url>
315+
<title>FileCompressTool</title>
316+
<menuParentId>littleTools</menuParentId>
317+
<isDefaultShow>true</isDefaultShow>
313318
</ToolFxmlLoaderConfiguration>
314319

315320
<ToolFxmlLoaderConfiguration url="/web/littleTools/cron/index.htm"

src/main/resources/locale/Menu.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,5 @@ FileSearchTool=\u6587\u4EF6\u641C\u7D22\u5DE5\u5177
9292
Mp3ConvertTool=Mp3\u8F6C\u6362\u5DE5\u5177
9393
SealBuilderTool=\u5370\u7AE0\u751F\u6210\u5DE5\u5177
9494
BullsAndCowsGame=\u731C\u6570\u5B57\u6E38\u620F
95-
FileUnicodeTransformationTool=\u6587\u4EF6\u7F16\u7801\u8F6C\u6362\u5DE5\u5177
95+
FileUnicodeTransformationTool=\u6587\u4EF6\u7F16\u7801\u8F6C\u6362\u5DE5\u5177
96+
FileCompressTool=\u6587\u4EF6\u89E3\u538B\u7F29\u5DE5\u5177

src/main/resources/locale/Menu_en_US.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,5 @@ FileSearchTool=FileSearchTool
9292
Mp3ConvertTool=Mp3ConvertTool
9393
SealBuilderTool=SealBuilderTool
9494
BullsAndCowsGame=BullsAndCowsGame
95-
FileUnicodeTransformationTool=FileUnicodeTransformationTool
95+
FileUnicodeTransformationTool=FileUnicodeTransformationTool
96+
FileCompressTool=FileCompressTool

src/test/java/com/xwintop/xJavaFxTool/javafx/JavaFxmlToolTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ public class JavaFxmlToolTest {
1010
// private String projectPath = "E:\\ideaWorkspaces\\xwintop\\xJavaFxTool\\src\\main\\";
1111
private String projectPath = "";
1212
private String resources = projectPath + "resources\\com\\xwintop\\xJavaFxTool\\fxmlView\\";
13-
// private String xmlPath = "littleTools\\FileRenameTool";
14-
private String xmlPath = "epmsTools\\gatewayConfTool\\GatewayConfToolServiceView";
13+
private String xmlPath = "littleTools\\FileCompressTool";
14+
// private String xmlPath = "epmsTools\\gatewayConfTool\\GatewayConfToolServiceView";
1515
private String srcPath = projectPath + "java\\com\\xwintop\\xJavaFxTool\\";
1616
@Test
1717
public void buildJava() throws Exception {

0 commit comments

Comments
 (0)