读取,修改,操作,编辑,jar文件
文件选择 jarFileSelect()
private void jarFileSelect(MouseEvent evt) {
JFileChooser fileChooser = new JFileChooser(".");
fileChooser.setDialogTitle("editFrame");
fileChooser.setFileHidingEnabled(false);
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
FileFilter filter = new FileNameExtensionFilter("jar文件", "jar");
fileChooser.addChoosableFileFilter(filter);
int choice = fileChooser.showOpenDialog(null);
if (choice != JFileChooser.APPROVE_OPTION) {
return;
}
contentTa.setText("");
File file = fileChooser.getSelectedFile();
jarFileTf.setText(file.getAbsolutePath());
}
有效性校验 valid()
private boolean valid() {
boolean ret = false;
if (!StringUtils.isEmpty(jarFileTf.getText()) && !StringUtils.isEmpty(fileTf.getText())) {
ret = true;
} else {
contentTa.setText("不能为空");
}
return ret;
}
根据stream获取byte getByte()
//从输入取字节
public byte[] getByte(java.io.InputStream s) {
byte[] buffer = new byte[0];
byte[] chunk = new byte[4096];
int count;
try {
while ((count = s.read(chunk)) >= 0) {
byte[] t = new byte[buffer.length + count];
System.arraycopy(buffer, 0, t, 0, buffer.length);
System.arraycopy(chunk, 0, t, buffer.length, count);
buffer = t;
}
s.close();
} catch (Exception e) {
}
return buffer;
}
打开jar文件 open()
private void open(MouseEvent evt) {
try {
if (!valid()) {
return;
}
String jarFileName = jarFileTf.getText();
String fileName = fileTf.getText();
File file = new File(jarFileName);
JarFile jarFile = new JarFile(file);
TreeMap tm = new TreeMap();
Enumeration es = jarFile.entries();
while (es.hasMoreElements()) {
JarEntry je = (JarEntry) es.nextElement();
byte[] bytes = getByte(jarFile.getInputStream(je));
tm.put(je.getName(), bytes);
if (je.getName().contains(fileName)) {
String str = new String(bytes);
contentTa.setText(str);
break;
}
}
} catch (Exception e) {
e.printStackTrace();
contentTa.setText("出错了!!!,文件格式不对");
}
JOptionPane.showMessageDialog(rootPane, "打开完成");
}
编辑 edit()
private void edit(MouseEvent evt) {
try {
if (!valid()) {
return;
}
String content = contentTa.getText();
if (content == null || content.equals("")) {
JOptionPane.showMessageDialog(rootPane, "不能为空");
return;
}
String jarFileName = jarFileTf.getText();
String fileName = fileTf.getText();
File file = new File(jarFileName);
JarFile jarFile = new JarFile(file);
TreeMap tm = new TreeMap();
Enumeration es = jarFile.entries();
while (es.hasMoreElements()) {
JarEntry je = (JarEntry) es.nextElement();
byte[] bytes = getByte(jarFile.getInputStream(je));
tm.put(je.getName(), bytes);
}
JarOutputStream out = new JarOutputStream(new FileOutputStream(file));
Set set = tm.entrySet();
Iterator it = set.iterator();
while (it.hasNext()) {
Map.Entry me = (Map.Entry) it.next();
String name = (String) me.getKey();
JarEntry jeNew = new JarEntry(name);
out.putNextEntry(jeNew);
byte[] b = (byte[]) me.getValue();
if (name.contains(fileName)) {
b = content.getBytes();
} else {
}
out.write(b, 0, b.length);
}
out.finish();
out.close();
JOptionPane.showMessageDialog(rootPane, "修改完成");
} catch (Exception e) {
e.printStackTrace();
contentTa.setText("出错了!!!,文件格式不对");
}
}
分享到:
相关推荐
在Java编程中,有时我们需要从已经打包的JAR文件中读取特定的资源文件,例如配置文件、图片或库。本篇文章将详细讲解如何在Java中实现从JAR包中读取指定文件的方法。 首先,Java提供了`java.util.jar`包,其中包含...
要使用这个库,你需要将Apache Commons Configurations的jar文件添加到你的项目类路径中,这通常是通过Maven或Gradle等构建工具完成的。在你的`pom.xml`(Maven)或`build.gradle`(Gradle)文件中添加对应的依赖。 ...
本篇文章将详细介绍如何使用Java读取doc和docx文件,并将重点放在所需的jar文件上。 首先,为了在Java中读取doc和docx文档,我们需要引入Apache POI库。Apache POI是一个开源项目,专门用于处理Microsoft Office...
本资源包聚焦于这个主题,包含了一系列jar包以及两个.java示例文件,帮助我们深入理解如何在Java环境中读取和解析Excel内容。 首先,让我们了解一下核心的jar包。这些jar包通常包含了用于操作Excel文件的API,例如...
这个压缩包可能包含了Apache POI库的jar文件或其他类似库,如JExcelApi、Aspose.Cells等。这些库可以帮助开发者高效地处理Excel文件,而无需使用Microsoft Office套件。如果你在使用过程中遇到问题,可以加入描述中...
2. 读取jar文件:使用java.util.jar.JarFile和java.util.jar.JarEntry读取jar文件中的资源文件。 3. 加载资源文件:使用java.io.InputStream读取资源文件的内容。 三、Java读取Jar中资源文件的示例代码 以下是Java...
这个库允许用户在Java程序中创建、读取和修改NetCDF文件,支持包括CF(Climate and Forecasting)在内的多种数据规范。使用该库的基本步骤如下: 1. 引入依赖:在项目中添加netcdf-4.3.22.jar作为外部库或通过Maven...
JAR文件是Java类文件和相关资源的容器,它们被组织成目录结构,类似于Unix或Windows的文件系统。每个JAR文件包含一个META-INF目录,其中的MANIFEST.MF文件记录了JAR的基本信息,如主类(Main-Class)等。 1. **打包...
在提供的压缩包文件名称"poi-3.9"中,我们可以推断出这包含的是Apache POI 3.9版本的所有JAR文件和其他相关资源。通常,这样的压缩包会包含poi-3.9.jar(主库),poi-ooxml-3.9.jar(用于处理OOXML文件),以及可能...
这些jar包提供了对Excel文件的全面支持,包括读取、写入和修改功能。 在Java代码中,我们可以使用以下步骤来读取xlsx文件: 1. 引入Apache POI库的jar包到你的项目类路径中。 2. 创建一个`XSSFWorkbook`对象,它是...
标题提及的"读取properties配置文件所用jar"主要指的是Apache Commons Configuration库,这是一个强大的Java库,它提供了读取和写入不同类型的配置文件(包括.properties文件)的能力。在这个场景中,我们使用的是...
在Java开发中,有时我们需要对已有的JAR文件进行处理,比如更改其中的类路径、重命名包或者合并多个JAR文件。在这种情况下,`jarjar`工具就显得非常实用。`jarjar`是一个用于处理Java JAR文件的命令行工具,它允许...
如果已有一个名为"lib"的压缩包,里面可能包含了所需的Apache POI库,解压后将相应的jar文件添加到项目的类路径中。 读取.xlsx文件的基本步骤如下: 1. 引入依赖:确保项目中导入了Apache POI的相关库,例如`poi-...
Apache POI是一个开源项目,提供了Java API来读取、写入和修改Microsoft Office格式的文件,包括Excel。本文将详细讲解如何使用Apache POI读取Excel 2007(.xlsx)文件,并提供相关的源代码和jar包。 首先,理解...
这个目录可能包含了多个JAR文件,这些文件可能是用来读取、写入或操作Excel文件的库。常见的有Apache POI、JExcelAPI、Aspose.Cells等。 2. **添加到项目类路径**:一旦你解压了JAR文件,你需要将它们添加到你的...
"官方jar文件"通常指的是由软件开发者或官方团队发布的,经过验证和测试的JAR包,它们通常包含了某个特定版本的库或应用程序的完整代码。 在Java开发中,JAR文件扮演了多种角色: 1. **代码打包与分发**:开发者...
然而,一旦JAR文件被创建,通常情况下是无法直接修改其内部内容的,因为它们是以只读方式存储的。但是,在特定情况下,可能需要删除JAR内的某个文件,例如更新或优化应用的某些部分。 在描述中提到的博文链接指向了...
通过阅读这个文本文件,你可以更深入地了解如何利用`jxl.jar`进行复杂的Excel操作,比如读取特定格式的单元格、处理公式结果、修改和保存Excel文件等。 在进行Java与Excel的交互时,需要注意的是,`jxl.jar`只支持...