开发这个小工具的初衷是为了修改工具 jar 包中的配置文件
本来打算将这个功能集成到 工具 jar 包自身
但是这里貌似有点儿问题,因为该 jar 包文件当前正在被 java 虚拟机使用,所以无法对其进行修改操作~
这里我有点儿疑惑,难道不是将 jar 包整个加载到内存中去了么?
为什么磁盘上的物理文件还是被牢牢锁定?mac上是这样,windows里面也是这样,应该有点儿蹊跷,不深究了~
本示例主要包含了以下知识点:
1。遍历 jar 文件中的所有文件(jar包实际上就是zip压缩包,没什么神奇的)
2。就像读取磁盘中的其他文件一样,对jar执行 读入和写出操作
3。将jar文件中的某个文件读到 swing的jTextArea 里面,在退出的时候将修改过的文字覆盖回原文件
4。将InputStream 安全的转换为 byte[] 数组
5。拖拽取得文件的完整路径
下面直接上代码实例:
package org.bruce.vertices.extra; import java.awt.Toolkit; import java.awt.datatransfer.DataFlavor; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetAdapter; import java.awt.dnd.DropTargetDropEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.jar.JarOutputStream; import java.util.zip.ZipEntry; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollBar; import javax.swing.JScrollPane; import javax.swing.JTextArea; /** * @author Bruce Yang * PS:本示例专门用于编辑