簡體   English   中英

檢查jar文件的內容

[英]check the contents of a jar file

我有一種情況,我需要讀取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文件的內容。 我想一次檢查一次,然后進入循環。 建議我。

我只想知道它是否有效

然后,您只需要迭代直到找到無效的文件。 您需要用代碼更改的主要內容是將操作從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已經是類型JarEntryEnumeration

為什么需要計算所有無效的文件? 您無法使用以下命令停止循環:

String name = jarEntry.getName()
if ! (name.endsWith(".png")....) {
   // invalid , let's stop
   break;
} 

在最壞的情況下,您只能迭代一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM