`
cobble19
  • 浏览: 107152 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论
阅读更多
读取,修改,操作,编辑,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中实现从JAR包中读取指定文件的方法。 首先,Java提供了`java.util.jar`包,其中包含...

    java读取ini文件jar

    要使用这个库,你需要将Apache Commons Configurations的jar文件添加到你的项目类路径中,这通常是通过Maven或Gradle等构建工具完成的。在你的`pom.xml`(Maven)或`build.gradle`(Gradle)文件中添加对应的依赖。 ...

    java读取doc,docx的jar文件

    本篇文章将详细介绍如何使用Java读取doc和docx文件,并将重点放在所需的jar文件上。 首先,为了在Java中读取doc和docx文档,我们需要引入Apache POI库。Apache POI是一个开源项目,专门用于处理Microsoft Office...

    读取分析Excel所有jar包和java示例文件

    本资源包聚焦于这个主题,包含了一系列jar包以及两个.java示例文件,帮助我们深入理解如何在Java环境中读取和解析Excel内容。 首先,让我们了解一下核心的jar包。这些jar包通常包含了用于操作Excel文件的API,例如...

    java读取excel文件jar包20181223

    这个压缩包可能包含了Apache POI库的jar文件或其他类似库,如JExcelApi、Aspose.Cells等。这些库可以帮助开发者高效地处理Excel文件,而无需使用Microsoft Office套件。如果你在使用过程中遇到问题,可以加入描述中...

    详解Java读取Jar中资源文件及示例代码

    2. 读取jar文件:使用java.util.jar.JarFile和java.util.jar.JarEntry读取jar文件中的资源文件。 3. 加载资源文件:使用java.io.InputStream读取资源文件的内容。 三、Java读取Jar中资源文件的示例代码 以下是Java...

    Java读取netcdf文件和生成等值线的jar_netcdf_wContour

    这个库允许用户在Java程序中创建、读取和修改NetCDF文件,支持包括CF(Climate and Forecasting)在内的多种数据规范。使用该库的基本步骤如下: 1. 引入依赖:在项目中添加netcdf-4.3.22.jar作为外部库或通过Maven...

    Eclipse打包成JAR包读取外部JAR包和外部配置文件(源码)

    JAR文件是Java类文件和相关资源的容器,它们被组织成目录结构,类似于Unix或Windows的文件系统。每个JAR文件包含一个META-INF目录,其中的MANIFEST.MF文件记录了JAR的基本信息,如主类(Main-Class)等。 1. **打包...

    poi读取excel的jar包

    在提供的压缩包文件名称"poi-3.9"中,我们可以推断出这包含的是Apache POI 3.9版本的所有JAR文件和其他相关资源。通常,这样的压缩包会包含poi-3.9.jar(主库),poi-ooxml-3.9.jar(用于处理OOXML文件),以及可能...

    读取xlsx文件jar包

    这些jar包提供了对Excel文件的全面支持,包括读取、写入和修改功能。 在Java代码中,我们可以使用以下步骤来读取xlsx文件: 1. 引入Apache POI库的jar包到你的项目类路径中。 2. 创建一个`XSSFWorkbook`对象,它是...

    读取properties配置文件所用jar

    标题提及的"读取properties配置文件所用jar"主要指的是Apache Commons Configuration库,这是一个强大的Java库,它提供了读取和写入不同类型的配置文件(包括.properties文件)的能力。在这个场景中,我们使用的是...

    替换jar包包名的jar以及rule规则文件

    在Java开发中,有时我们需要对已有的JAR文件进行处理,比如更改其中的类路径、重命名包或者合并多个JAR文件。在这种情况下,`jarjar`工具就显得非常实用。`jarjar`是一个用于处理Java JAR文件的命令行工具,它允许...

    读取xlsx文件的poi jar包

    如果已有一个名为"lib"的压缩包,里面可能包含了所需的Apache POI库,解压后将相应的jar文件添加到项目的类路径中。 读取.xlsx文件的基本步骤如下: 1. 引入依赖:确保项目中导入了Apache POI的相关库,例如`poi-...

    如何用 poi读取excel2007文件 附源代码和全部jar包

    Apache POI是一个开源项目,提供了Java API来读取、写入和修改Microsoft Office格式的文件,包括Excel。本文将详细讲解如何使用Apache POI读取Excel 2007(.xlsx)文件,并提供相关的源代码和jar包。 首先,理解...

    导入Excel文件所需要的JAR文件

    这个目录可能包含了多个JAR文件,这些文件可能是用来读取、写入或操作Excel文件的库。常见的有Apache POI、JExcelAPI、Aspose.Cells等。 2. **添加到项目类路径**:一旦你解压了JAR文件,你需要将它们添加到你的...

    官方jar文件

    "官方jar文件"通常指的是由软件开发者或官方团队发布的,经过验证和测试的JAR包,它们通常包含了某个特定版本的库或应用程序的完整代码。 在Java开发中,JAR文件扮演了多种角色: 1. **代码打包与分发**:开发者...

    删除jar包中的指定文件

    然而,一旦JAR文件被创建,通常情况下是无法直接修改其内部内容的,因为它们是以只读方式存储的。但是,在特定情况下,可能需要删除JAR内的某个文件,例如更新或优化应用的某些部分。 在描述中提到的博文链接指向了...

    jxl.jar excel读取jar包

    通过阅读这个文本文件,你可以更深入地了解如何利用`jxl.jar`进行复杂的Excel操作,比如读取特定格式的单元格、处理公式结果、修改和保存Excel文件等。 在进行Java与Excel的交互时,需要注意的是,`jxl.jar`只支持...

Global site tag (gtag.js) - Google Analytics