怎么使用Java实现多层文件夹压缩功能(java,开发技术)

时间:2024-05-09 16:45:38 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

这篇“怎么使用Java实现多层文件夹压缩功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Java实现多层文件夹压缩功能”文章吧。

压缩文件相关技术

1.题目

做一个多层文件夹压缩包的释放的工具。

2.解题思路

创建一个类:UnZipDirectoryFrame

使用UnZipDirectoryFrame继承JFrame构建窗体

压缩包内会有多个文件夹,每个文件夹可能会有文件夹或是文件,为了解压缩时能还原出文件夹的层次关系。

解压缩包含子文件夹的文件夹方案和解压缩全是文件的文件夹类似,区别在于如何找出包含子文件夹的文件夹的所有文件,并且构造ZipEntry时,不要有重名的情况。

3.代码详解

packagecom.xiaoxuzhu;importjava.awt.BorderLayout;importjava.awt.EventQueue;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importjava.util.zip.ZipEntry;importjava.util.zip.ZipInputStream;importjavax.swing.JButton;importjavax.swing.JFileChooser;importjavax.swing.JFrame;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTable;importjavax.swing.JTextField;importjavax.swing.border.EmptyBorder;importjavax.swing.filechooser.FileNameExtensionFilter;importjavax.swing.table.DefaultTableModel;/***Description:多层文件夹压缩包的释放**@authorxiaoxuzhu*@version1.0**<pre>*修改记录:*修改后版本 修改人 修改日期 修改内容*2022/5/4.1 xiaoxuzhu 2022/5/4 Create*</pre>*@date2022/5/4*/publicclassUnZipDirectoryFrameextendsJFrame{/****/privatestaticfinallongserialVersionUID=7178478435446172846L;privateJPanelcontentPane;privateJTextFieldchooseTextField;privateJTabletable;privateFilezipFile;/***Launchtheapplication.*/publicstaticvoidmain(String[]args){EventQueue.invokeLater(newRunnable(){publicvoidrun(){try{UnZipDirectoryFrameframe=newUnZipDirectoryFrame();frame.setVisible(true);}catch(Exceptione){e.printStackTrace();}}});}/***Createtheframe.*/publicUnZipDirectoryFrame(){setTitle("多层文件夹压缩包的释放");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100,100,450,300);contentPane=newJPanel();contentPane.setBorder(newEmptyBorder(5,5,5,5));setContentPane(contentPane);contentPane.setLayout(newBorderLayout(0,0));JPanelchoosePanel=newJPanel();contentPane.add(choosePanel,BorderLayout.NORTH);chooseTextField=newJTextField();choosePanel.add(chooseTextField);chooseTextField.setColumns(18);JButtonchooseButton=newJButton("选择压缩文件");chooseButton.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventarg0){do_chooseButton_actionPerformed(arg0);}});choosePanel.add(chooseButton);JPanelbuttonPanel=newJPanel();contentPane.add(buttonPanel,BorderLayout.SOUTH);JButtonunzipButton=newJButton("开始解压缩");unzipButton.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventarg0){do_unzipButton_actionPerformed(arg0);}});buttonPanel.add(unzipButton);JScrollPanescrollPane=newJScrollPane();contentPane.add(scrollPane,BorderLayout.CENTER);table=newJTable();scrollPane.setViewportView(table);}protectedvoiddo_chooseButton_actionPerformed(ActionEventarg0){JFileChooserfileChooser=newJFileChooser();fileChooser.setFileFilter(newFileNameExtensionFilter("文本文件","zip"));fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);intresult=fileChooser.showOpenDialog(this);if(result==JFileChooser.APPROVE_OPTION){zipFile=fileChooser.getSelectedFile();chooseTextField.setText(zipFile.getAbsolutePath());}}protectedvoiddo_unzipButton_actionPerformed(ActionEventarg0){DefaultTableModelmodel=(DefaultTableModel)table.getModel();model.setColumnIdentifiers(newObject[]{"序号","文件名"});List<String>list=newArrayList<String>();try{unzip(zipFile,list);for(inti=0;i<list.size();i++){model.addRow(newObject[]{i+1,list.get(i)});}table.setModel(model);JOptionPane.showMessageDialog(this,"解压缩完成");}catch(IOExceptione){e.printStackTrace();}}privatestaticvoidunzip(FilezipFile,List<String>list)throwsIOException{//利用用户选择的ZIP文件创建ZipInputStream对象ZipInputStreamin=newZipInputStream(newFileInputStream(zipFile));ZipEntryentry;while((entry=in.getNextEntry())!=null){//遍历所有ZipEntry对象if(!entry.isDirectory()){//如果是文件则创建并写入FiletempFile=newFile(zipFile.getParent()+File.separator+entry.getName());list.add(tempFile.getName());//增加文件名newFile(tempFile.getParent()).mkdirs();//创建文件夹tempFile.createNewFile();//创建新文件FileOutputStreamout=newFileOutputStream(tempFile);intb;while((b=in.read())!=-1){//写入数据out.write(b);}out.close();//释放资源}}in.close();}}

怎么使用Java实现多层文件夹压缩功能

解压缩成功:

怎么使用Java实现多层文件夹压缩功能

以上就是关于“怎么使用Java实现多层文件夹压缩功能”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

本文:怎么使用Java实现多层文件夹压缩功能的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Java中mybatis的分页方式有哪些下一篇:

12 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18