2013-06-24 56 views
0

我有一種情況,我需要閱讀Jar文件的內容並檢查其中的內容。檢查jar文件的內容

我在這裏的問題是我可以閱讀內容的jar文件,但我無法檢查條目按我的要求。

我的要求是我應該允許有延期,.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

所以你只想知道它是一個「有效的」或「無效的」jar文件?或者你也想知道哪些條目是「無效的」? –

+0

@andreas我只想知道它是否有效或無效。 – Saha

回答

0

爲什麼你需要計算所有無效的文件?你不能停止這樣的循環:

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

在最糟糕的情況下,你只能迭代一次。

+0

這不適用於我... – Saha

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已經JarEntry類型的Enumeration

+0

其實我想每次都檢查它們......在上面的例子中,它會多次遍歷while循環。 – Saha

+0

既然你想檢查每個條目的名稱,你將不得不迭代條目 –