Hello Paul, and thanks again for taking a moment to look at this. I tried as you suggested: - - - - - - - - - - import java.util.zip.ZipInputStream
def ff = session.get() if (!ff) return try { ff = session.write(ff, { inputStream, outputStream -> def zipInputStream = new ZipInputStream(inputStream) def entry = zipInputStream.getNextEntry() while (entry != null) { entry = zipInputStream.getNextEntry() } *outputStream = inputStream* } as StreamCallback) session.transfer(ff, REL_SUCCESS) } catch (Exception e) { log.error('Error occurred processing FlowFile', e) session.transfer(ff, REL_FAILURE) } - - - - - - - - - - Once again it threw this error and failed: ExecuteScript[id=ae3e5de5-018d-1000-ff81-b0c807b75086] Error occurred processing FlowFile: org.apache.nifi.processor.exception.ProcessException: IOException thrown from ExecuteScript[id=ae3e5de5-018d-1000-ff81-b0c807b75086]: java.util.zip.ZipException: invalid compression method - Caused by: java.util.zip.ZipException: invalid compression method It bears repeating: I am able to list and unzip the file at the linux command line, but cannot get it to work from the script. What is interesting (and a little frustrating) is that the NiFi UnpackContent *will *successfully unzip the zip file. However, the reason I am trying to do it in Groovy is that UnpackContent exposes the file metadata for each file in a tar archive - lastModifiedDate, for example - but it does *not* do so for files extracted from zips. And I need that metadata. So here I be. Can I explicitly set my (de)compression in the Groovy script? Where would I do that, and what values does one typically encounter for zip compression? Jim On Thu, Feb 15, 2024 at 9:26 PM Paul King <pa...@asert.com.au> wrote: > What you are doing to read the zip looks okay. > > Just a guess, but it could be that because you haven't written to the > output stream, it is essentially a corrupt data stream as far as NiFi > processing is concerned. What happens if you set "outputStream = > inputStream" as the last line of your callback? > > Paul. > > < > https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail > > > Virus-free.www.avast.com > < > https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail > > > <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> > > On Fri, Feb 16, 2024 at 8:48 AM James McMahon <jsmcmah...@gmail.com> > wrote: > > > > I am struggling to build a Groovy scri[t I can run from a NiFi > ExecuteScript processor to extract from a zip file and stream to a tar > archive. > > > > I tried to tackle it all at once and made little progress. > > I am now just trying to read the zip file, and am getting this error: > > > > ExecuteScript[id=ae3e5de5-018d-1000-ff81-b0c807b75086] Error occurred > processing FlowFile: org.apache.nifi.processor.exception.ProcessException: > IOException thrown from > ExecuteScript[id=ae3e5de5-018d-1000-ff81-b0c807b75086]: > java.util.zip.ZipException: invalid compression method > > - Caused by: java.util.zip.ZipException: invalid compression method > > > > > > This is my simplified code: > > > > > > import java.util.zip.ZipInputStream > > > > def ff = session.get() > > if (!ff) return > > > > try { > > ff = session.write(ff, { inputStream, outputStream -> > > def zipInputStream = new ZipInputStream(inputStream) > > def entry = zipInputStream.getNextEntry() > > while (entry != null) { > > entry = zipInputStream.getNextEntry() > > } > > } as StreamCallback) > > > > session.transfer(ff, REL_SUCCESS) > > } catch (Exception e) { > > log.error('Error occurred processing FlowFile', e) > > session.transfer(ff, REL_FAILURE) > > } > > > > > > I am able to list and unzip the file at the linux command line, but > cannot get it to work from the script. > > > > > > Has anyone had success doing this? Can anyone help me get past this > error? > > > > > > Thanks in advance. > > > > Jim > > > > >