Я настраиваю функцию, в которой я собираю список файлов apk, затем в цикле For я объявляю интенсивный ZipFile для проверки каталогов ABI в папке lib, проверяя, заканчивается ли какой-либо файл на ". так". Единственное решение, о котором я могу подумать, - это использовать регулярные выражения String
Я сделал несколько попыток выражения регулярного выражения с \ b, [A-Za-z-0-9] *, но я получаю исключение NullPointerException. Я исследовал решения для использования регулярных выражений с именами файлов, но на самом деле это не относится к классам ZipFile и ZipEntry. На данный момент, вот мой текущий подход с Regex. (Иногда выражения регулярных выражений заставляют мою голову кружиться.)
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 равно нулю. Я не уверен, что ошибка связана с моим выражением регулярного выражения или оно работает, но для случаев, когда в каталоге существует более одного ".so". Можно ли даже использовать Regex в ZipFile / ZipEntry?