gpt4 book ai didi

java - 如何查找 Zip 文件目录中的任何文件

转载 作者:行者123 更新时间:2023-11-30 01:49:58 25 4
gpt4 key购买 nike

我正在设置一个函数,在其中收集 apk 文件列表,然后在 For 循环内,我声明一个 ZipFile 密集型来检查 lib 文件夹下的 ABI 目录,方法是检查是否有任何文件以“.所以”。我能想到的唯一解决方案是使用正则表达式字符串表达式

我已经尝试使用\b, [A-Za-z-0-9]* 进行了几次正则表达式尝试,但我不断收到 NullPointerException。我研究了使用正则表达式与文件名的解决方案,但并不是 ZipFile 和 ZipEntry 类的实际情况。目前,这是我目前使用正则表达式的方法。 (有时正则表达式让我头晕。)

public void createAPKList() throws ZipException, IOException {
apkFileList = new File("C:/eclipse/workspace/Appium-Side-Project/APKDir/APKFiles").listFiles();
System.out.println(apkFileList[apkFileList.length-1].getPath());
apkInstallOptions = storeAndSortFiles(apkFileList, apkInstallOptions);
}


private HashMap<String, File> storeAndSortFiles(File[] fileList, HashMap<String, File> storageList) throws ZipException, IOException{
ZipFile apkDetails;
//Example of calling specific ABI
String aBI = "armeabi-v7a/";
String patternStr = "^lib/"+aBI+"[(.*)].so$";
for(File apk : fileList) {

//how to initialize ZipEntry to assign the any file that ends with ".so" ?
apkDetails = new ZipFile(apk);
ZipEntry readFolders = apkDetails.getEntry(patternStr);
System.out.println(readFolders.getName().startsWith("lib/armeabi-v7a/"));

}
return storageList;
}

当前的解决方案给出了 NullPointerException,因为 ZipEntry 值为 null。我不确定错误是否来 self 的正则表达式或表达式正在工作,但对于目录中存在多个“.so”的情况。是否可以在 ZipFile/ZipEntry 中使用正则表达式?

最佳答案

一句话:不。

不支持模式,实际上 documentation 中没有任何内容。这意味着允许某种模式。您必须迭代 all entries在 ZipFile 中,检查每个是否匹配:

Enumeration<? extends ZipEntry> entries = apkDetails.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
String name = entry.getName();
if (entry.startsWith("lib/armeabi-v7a/") && entry.endsWith(".so")) {
// Matching entry found.
}
}

有句老话说,当一个人决定用正则表达式解决一个问题时,一个人就从一个问题变成了两个问题。如果不需要正则表达式,最好不要使用它们。在您的情况下, startsWithendsWith 就足够了。

我不确定您是否需要对匹配条目执行某些操作,或者您是否只想检查它们是否存在。如果是后一种情况,您可以使用 Stream 来简化代码:

boolean hasMatchingEntries =
apiDetails.stream().map(ZipEntry::getName).anyMatch(
name -> name.startsWith("lib/armeabi-v7a/") && name.endsWith(".so"));

关于java - 如何查找 Zip 文件目录中的任何文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56411529/

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