我有一种情况需要读取Jar文件的内容并检查其中的内容。
我的问题是我可以阅读内容jar文件,但我无法按照我的要求检查条目。
我的要求是我应该允许包含.xml
,.png or .jpg or .jpeg
和.MF
文件扩展名的广告
这是我的代码。
JarFile connectorjarfile = new JarFile(jarFileStorageocation);
Enumeration<JarEntry> jarEntries1 = connectorjarfile.entries();
int count = 0;
while (jarEntries1.hasMoreElements()) {
System.out.println("Before Jar Validation is going on");
JarEntry jarEntry = (JarEntry) jarEntries1.nextElement();
System.out.println(jarEntry.getName());
String msg1 = "valid Jar File";
String msg2 = "Invalid Jar File";
if ((jarEntry.getName().endsWith(".png") || jarEntry.getName().endsWith(".jpg") || jarEntry.getName().endsWith(".jpeg")) || jarEntry.getName().endsWith(".xml") || jarEntry.getName().endsWith(".MF") || jarEntry.getName().equals("META-INF/")) {
try {
response.getWriter().write(msg1);
break;
} catch (Exception e) {
e.printStackTrace();
}
} else {
count++;
try {
response.getWriter().write(msg2);
break;
} catch (IOException e) {
e.printStackTrace();
}
//break;
}
If循环执行了很多次,因为它逐个检查Jar文件的内容。 我想一次检查一个,然后进入循环。建议我。
答案 0 :(得分:1)
我只想知道它是有效还是无效
然后,您只需要迭代,直到找到无效文件。您需要更改代码的主要方法是将操作从if
/ else
块移动循环 - 在循环内部,只需设置一个标志即可指示当您找到无效条目时:
boolean isValid = true;
while (isValid && jarEntries1.hasMoreElements()) {
JarEntry jarEntry = jarEntries1.nextElement();
isValid = jarEntry.getName().endsWith(".png") || jarEntry.getName().endsWith(".jpg") ||
jarEntry.getName().endsWith(".jpeg") || jarEntry.getName().endsWith(".xml") ||
jarEntry.getName().endsWith(".MF") || jarEntry.getName().equals("META-INF/");
}
if (isValid) {
// do whatever you want if the file is valid
} else {
// do whatever you want if the file is not valid
}
旁注:
您无需将结果从nextElement()
显式转换为JarEntry
- jarEntries1
已经是Enumeration
类型JarEntry
。
答案 1 :(得分:0)
为什么需要统计所有无效的文件?你无法通过以下方式停止循环:
String name = jarEntry.getName()
if ! (name.endsWith(".png")....) {
// invalid , let's stop
break;
}
在最坏的情况下,您必须只迭代一次。