<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
做一個讀取jar檔案的內容和功能的工具。
建立一個類:ReaderJarFrame
使用ReaderJarFrame繼承JFrame構建表單
在選擇jar後,表單的表格會顯示其內容。
建立一個類:ReadJar
ReadJar類實現讀取功能
讀取的邏輯:使用JarFile類與Enumeration介面。
jarFile是Java提供的一個類,可以讀取jar包中的所有檔案(遞迴讀取),然後提取指定的檔案。
JarFile.entries()可以得到一個jar檔案內部元素的迭代器(Enumeration)。同過這個迭代器我們可以獲得所有的JarEntry
ReaderJarFrame類
package com.xiaoxuzhu; import java.awt.EventQueue; import java.awt.FileDialog; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.util.List; import javax.swing.JScrollPane; import javax.swing.JTable; /** * Description: * * @author xiaoxuzhu * @version 1.0 * * <pre> * 修改記錄: * 修改後版本 修改人 修改日期 修改內容 * 2022/5/3.1 xiaoxuzhu 2022/5/3 Create * </pre> * @date 2022/5/3 */ public class ReaderJarFrame extends JFrame { /** * */ private static final long serialVersionUID = 7776474232093298420L; private JPanel contentPane; private JTextField pathTextField; private JTable table; private LocalTableModel model = new LocalTableModel(); /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { ReaderJarFrame frame = new ReaderJarFrame(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public ReaderJarFrame() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); setTitle("獲取Jar檔案的檔案屬性"); JPanel panel = new JPanel(); panel.setBounds(0, 0, 434, 262); contentPane.add(panel); panel.setLayout(null); JLabel messageLabel = new JLabel("檔案:"); messageLabel.setBounds(39, 25, 41, 15); panel.add(messageLabel); pathTextField = new JTextField(); pathTextField.setBounds(90, 22, 185, 21); panel.add(pathTextField); pathTextField.setColumns(10); JButton button = new JButton("選擇"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { do_button_actionPerformed(arg0); } }); button.setBounds(305, 21, 79, 23); panel.add(button); JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(30, 77, 372, 152); panel.add(scrollPane); table = new JTable(model); scrollPane.setViewportView(table); } // 開啟按鈕的單擊事件 @SuppressWarnings("rawtypes") protected void do_button_actionPerformed(ActionEvent arg0) { java.awt.FileDialog fd = new FileDialog(this); fd.setVisible(true); String path = fd.getDirectory() + fd.getFile(); if (path.endsWith(".jar")) { pathTextField.setText(path); List list = ReadJar.process(path); for (int i = 0; i < list.size(); i++) { FileName fileName = (FileName) list.get(i); model.addRow(new Object[] { fileName.getName(), fileName.getSize() }); } } } }
FileName類
package com.xiaoxuzhu; /** * Description: * * @author xiaoxuzhu * @version 1.0 * * <pre> * 修改記錄: * 修改後版本 修改人 修改日期 修改內容 * 2022/5/3.1 xiaoxuzhu 2022/5/3 Create * </pre> * @date 2022/5/3 */ public class FileName { private String name; private String size; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSize() { return size; } public void setSize(String size) { this.size = size; } }
LocalTableModel類:
package com.xiaoxuzhu; import javax.swing.table.DefaultTableModel; /** * Description: * * @author xiaoxuzhu * @version 1.0 * * <pre> * 修改記錄: * 修改後版本 修改人 修改日期 修改內容 * 2022/5/3.1 xiaoxuzhu 2022/5/3 Create * </pre> * @date 2022/5/3 */ public class LocalTableModel extends DefaultTableModel { /** * */ private static final long serialVersionUID = 8746141681804141757L; Class<?>[] types = new Class[] { java.lang.Object.class, java.lang.String.class }; boolean[] canEdit = new boolean[] { false, false }; public LocalTableModel() { super(new Object[][] {}, new String[] { "檔案", "大小" }); } @Override public Class<?> getColumnClass(int columnIndex) { return types[columnIndex]; } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit[columnIndex]; } }
ReadJar類:
package com.xiaoxuzhu; import java.util.*; import java.util.jar.JarEntry; import java.util.jar.JarFile; /** * Description: * * @author xiaoxuzhu * @version 1.0 * * <pre> * 修改記錄: * 修改後版本 修改人 修改日期 修改內容 * 2022/5/3.1 xiaoxuzhu 2022/5/3 Create * </pre> * @date 2022/5/3 */ public class ReadJar { @SuppressWarnings("rawtypes") static List<FileName> process(String fileName) { List<FileName> list = new ArrayList<FileName>(); // 建立List集合物件 try { JarFile jarFile = new JarFile(fileName); // 建立JarFile物件 Enumeration en = jarFile.entries(); while (en.hasMoreElements()) { // 測試列舉中是否包含更多的元素 FileName file = new FileName(); // 定義JavaBean物件 JarEntry entry = (JarEntry) en.nextElement(); // 獲取集合中的元素 String name = entry.getName(); // 獲取檔名稱 long size = entry.getSize(); // 獲取檔案大小 file.setName(name); file.setSize(size + ""); list.add(file); // 將物件新增到集合中 } } catch (Exception e) { e.printStackTrace(); } return list; } }
讀取結果:
以上就是Java實現讀取Jar檔案屬性的方法詳解的詳細內容,更多關於Java讀取Jar檔案屬性的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45