【问题标题】:Java - copy Jar FolderJava - 复制 Jar 文件夹
【发布时间】:2010-04-19 18:59:17
【问题描述】:
实际上我遇到了一个问题。我的应用程序包中有一个“.apk 文件”。 apk 是一种 jar 文件(apk = Android Package)。
我现在想将这个 jar 文件从我的 Programm 复制到 PC 上的任何其他位置。
通常我会使用:
FileInputStream is = new FileInputStream(this.getClass().getResource("/resources/myApp.apk").getFile());
然后使用 FileOutputStream 将其写入磁盘。
...但是由于 .apk 是一种 .jar 它不起作用。它只是复制 .apk 文件。但没有包含其他文件。
任何帮助将不胜感激
【问题讨论】:
标签:
java
android
jar
getresource
【解决方案1】:
由于.apk 是另一个名称的.jar 文件(换句话说,它是一个zip 文件,其中包含配置文件在目录中存储位置的一些特定定义)然后查看ZipInputStream 以读取文件并浏览内容并将它们写成文件。
【解决方案2】:
非常感谢 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;
}
}