gpt4 book ai didi

java - 在 Objective-C 中解压 .jar 文件

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:32 25 4
gpt4 key购买 nike

我想知道是否可以将 .jar 文件的内容提取到不同的目录中,然后将一些文件添加到该目录中,然后将该目录压缩回 .jar 文件中,并添加添加内容。我找到的提取 jar 文件的一种方法是使用 NSTask 执行 jar xf(jar 文件位置)的终端命令。这有效,但它永久停止了程序的 UI(不会使其崩溃),并将内容解压到存储应用程序的目录中,这需要清理一些困惑。还有另一种方法可以做到这一点,还是我错误地使用了 NSTask?这是我正在使用的代码:

//Unarchive the jar
[self runCommandWithBase:@"/usr/bin/jar" arguments:[NSArray arrayWithObjects:@"xf", jarLocation, nil]];

- (NSString *)runCommandWithBase:(NSString *)base arguments:(NSArray *)arguments {
//Create the task
NSTask *task = [[NSTask alloc] init];

//Setup the task
[task setLaunchPath:base];
[task setArguments:arguments];
[task setStandardInput:[NSPipe pipe]];
[task setStandardOutput:[NSPipe pipe]];

//Set file handle
NSFileHandle *file = [[NSPipe pipe] fileHandleForReading];

//Run the command
[task launch];

//Return
NSData *returnData = [file readDataToEndOfFile];
return [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];}

是否有一种方法可以在 Xcode 中包含一个 java 应用程序来解压文件,添加其他文件,然后重新压缩它?然后用NSTask执行java应用程序?

提前致谢,

最佳答案

.jar 文件只不过是具有不同扩展名的 .zip 文件。您可能可以使用任何可以打开 ZIP 文件的库来打开它。

不过,根据您所做的更改以及 JAR 的构建方式,您可能需要更新 /META-INF/ 上的 manifest.mf 文件以反射(reflect)对 checksum 的更改。

关于java - 在 Objective-C 中解压 .jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9061944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com