怎么使用Java实现多层文件夹压缩功能
导读:本文共3002字符,通常情况下阅读需要10分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:这篇“怎么使用Java实现多层文件夹压缩功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Java实现多层文件夹压缩功能”文章吧。压缩文件相关技术1.题目做一个多层文件夹压缩包的释放的工具。2.解题思路创建一个类:UnZipDirectoryFrame使用UnZipDirec... ...
目录
(为您整理了一些要点),点击可以直达。这篇“怎么使用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实现多层文件夹压缩功能的详细内容,希望对您有所帮助,信息来源于网络。