如何计算CQ5中while循环中所有图像的总字节数
问题描述:
您好我正在致力于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
任何人都可以建议我在哪里必须在上面的代码进行更改?
答
尝试以下.. 您可以重构代码如下..但我只是集中于总字节数:
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);