Question

I have the following piece of code -

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(outputStream);

for (int i = 0; i < params.getGrades().size(); i++) {
generateReport(param1, param2, zos);
}

zos.flush();
zos.close();

In the generateReport method, I have code to generate my reports as xls files and add them to ZIP.

Is there any way we can check if any files have been written in the ZIP file, or if the ZIP file is empty? is there any property I can use?

Thanks, Raaz

Was it helpful?

Solution 5

@Didier - I decided to take your advice on returning a value, but ended up doing it this way -

Instead of checking if a file has been added to the ZIP, I checked if the list data I'm trying to write in an xls file (the file which in turn gets added to the ZIP) is empty. If it's empty, then I set a error value to "No file generated". If the list is not empty, I assigned the an empty value to the string and returned it to the calling function.

OTHER TIPS

You can use the ZipFile from the java.util.zip package.

You can invoke the

size()

method.

After you close zos, outputStream.size() gives you the number of bytes written. You would have to allow for whatever the ZIP header size is for an empty ZIP file.

@Raaz, Please go through this link.

In that you can see a Class called 'ZipEntry'. It represents the files contained in a zip folder. It provides some useful methods such as:

zipEntry.getName(); // name of the file contained by zip.
zipEntry.getSize(); // size of the file contained by zip.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top