java实现按钮一键归档
时间: 2023-09-11 14:09:48 浏览: 149
下面是一个简单的Java代码示例,用于实现一个按钮一键归档的功能:
```java
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFileChooser;
public class ArchiveButton extends JButton {
private static final long serialVersionUID = 1L;
public ArchiveButton(String label) {
super(label);
addActionListener(e -> {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
File directory = fileChooser.getSelectedFile();
String archiveName = "archive-" + new SimpleDateFormat("yyyyMMdd-HHmmss").format(new Date()) + ".zip";
Path archivePath = Paths.get(directory.getAbsolutePath(), archiveName);
try {
Files.walk(directory.toPath())
.filter(path -> !Files.isDirectory(path))
.forEach(path -> {
try {
Files.copy(path, archivePath.resolve(directory.toPath().relativize(path)));
} catch (IOException e1) {
e1.printStackTrace();
}
});
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
}
}
```
这个代码示例使用了Swing的JFileChooser组件,允许用户选择要归档的文件夹。一旦用户选择了一个文件夹,程序将创建一个新的ZIP归档文件,并递归地将文件夹中的所有文件添加到归档文件中。归档文件的名称基于当前日期和时间生成。
要使用此代码,只需将其复制到Java类中,并将其添加到您的Swing应用程序中。例如,您可以将其添加到JFrame中的构造函数中:
```java
public class MyFrame extends JFrame {
private static final long serialVersionUID = 1L;
public MyFrame() {
// ...
ArchiveButton archiveButton = new ArchiveButton("Archive");
getContentPane().add(archiveButton, BorderLayout.SOUTH);
// ...
}
}
```
然后,当用户单击按钮时,程序将提示他们选择要归档的文件夹,并在完成后创建一个ZIP归档文件。
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)