2017-03-09 62 views
0

您好我正在致力于Adobe体验经理(AEM)CQ5。现在我的任务是我必须从存储库中计算未使用的大坝图像的大小。在迭代它的时候,我得到了每个文件的字节大小,但是我无法统计一次循环中所有图像的字节数。这里是代码示例如何计算CQ5中while循环中所有图像的总字节数

while (iterator.hasNext()) { 
    Node node = session.getNode(iterator.nextNode().getPaath()); 
    Resource res = resourceResolver = resourceResolver.getResource(node.getPath()); 
    byte[] result = null; 
    try { 
     Node ntFileNode = getSession().getNode("Path"); 
     Node ntResourceNode = ntFileNode.getNode("jcr:content"); 
     InputStream is = ntResourceNode.getProperty("jcr:data").getBinary().getStream(); 
     BufferedInputStream bin = new BufferedInputStream(is); 
     result = IOUtils.toByteArray(bin); 
     bin.close(); 
     is.close(); 
     System.out.print("Bytes of Images " + result); // here I am getting bytes of images but in individual. I want to get the total count of bytes of all images. 
    } // while loop ends 

任何人都可以建议我在哪里必须在上面的代码进行更改?

回答

1

尝试以下.. 您可以重构代码如下..但我只是集中于总字节数:

int totalBytes = 0; 
while(iterator.hasNext()){ 
    Node node = session.getNode(iterator.nextNode().getPaath()); 
    Resource res = resourceResolver = resourceResolver.getResource(node.getPath()); 
    byte[] result = null; 
    try { 
     Node ntFileNode = getSession().getNode("Path"); 
     Node ntResourceNode = ntFileNode.getNode("jcr:content"); 
     InputStream is = ntResourceNode.getProperty("jcr:data").getBinary().getStream(); 
     BufferedInputStream bin = new BufferedInputStream(is); 
     result = IOUtils.toByteArray(bin); 

     totalBytes = totalBytes + result; 

     bin.close(); 
     is.close(); 
     System.out.print("Bytes of Image "+ result); // here I am getting bytes of images but in individual. I want to get the totoal count of bytes of all images. 

     result=null; //optional - just to be sure. 
    } // while loop ends 

    System.out.print("Total bytes of all images= "+ totalBytes);