0

实际上我遇到了一个问题。我的应用程序包中有一个“.apk 文件”。apk 是一种 jar 文件(apk = Android Package)。我现在想将这个 jar 文件从我的 Programm 复制到 PC 上的任何其他位置。通常我会通过使用来做到这一点:

FileInputStream is = new FileInputStream(this.getClass().getResource("/resources/myApp.apk").getFile());

然后使用 FileOutputStream 将其写入磁盘。...但是由于 .apk 是一种 .jar 它不起作用。它只是复制 .apk 文件。但没有包含其他文件。

任何帮助,将不胜感激

4

2 回答 2

1

由于.apk.jar另一个名称的文件(换句话说,它是一个 zip 文件,其中包含一些特定定义的配置文件在目录中的存储位置)然后查看ZipInputStream以读取文件并遍历内容并将它们作为文件写出。

于 2010-04-19T19:12:20.217 回答
0

非常感谢 Yishai ......这是我一直在等待的提示 :) 可能有人在那里,谁需要做同样的事情,因此......这是我的代码:

public static boolean copyApkFile(File outputFile){
        try {
            FileInputStream fis = new FileInputStream(this.getClass().getResource("/resources/myApkFile.apk").getFile());
            ZipInputStream zis = new ZipInputStream(fis);
            FileOutputStream fos = new FileOutputStream(outputFile));
            ZipOutputStream zos = new ZipOutputStream(fos);
            ZipEntry ze = null;
            byte[] buf = new byte[1024];
            while ((ze = zis.getNextEntry()) != null) {
                System.out.println("Next entry "+ze.getName()+" "+ze.getSize());
                zos.putNextEntry(ze);
                int len;
                while ((len = zis.read(buf)) > 0) {
                  zos.write(buf, 0, len);
                }
            }
            zos.close();
            fos.close();
            zis.close();
            fis.close();
            return true;
        } catch (IOException ex) {
            Logger.getLogger(SetUpNewDevice.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
    }
于 2010-04-19T20:41:08.543 回答