Search code examples
antunzip

No overwrite on Ant UNZIP


I want to unzip a file, but if some file exists, this mustn´t be replaced.

I tried this:

<unzip src="compress.zip" dest="dirTo" overwrite="false">
<patternset>
    <include name="dirFrom/**"/>
</patternset>

"dirFrom", is the name from the directory IN the compress file, what I want to extract. I use "overwrite" to false, but it doesn´t work, and it ovewrites.

I have a directory, and this has different subdirectories. I want one of those subdirectories, with it´s files and sub-subdirectories.


Solution

  • I found how to do it.

    1st, I extract everything to auxiliar directory. 2nd, I make a loop, to compare file by file, if that file exists. 3rd, If the file doesn´t exists, I copy it.

        <unzip src="compressFile.zip" dest="dirAux">
        <patternset>
            <include name="mySubDir/**"/>
        </patternset>
    </unzip>
    
    <fileset id="fileset1" dir="dirAux/mySubDir" />
    <property name="newContentMySubDir" refid="fileset1"/>
    
    <for param="nameFile" list="${newContentMySubDir}" delimiter=";">
        <sequential>
    
            <if>
                <not><available file="${finalDir}/mySubDir/@{nameFile}" type="file"/></not>
                <then>
                    <copy tofile="${finalDir}/mySubDir/@{nameFile}" file="dirAux/mySubDir/@{nameFile}"/>
                </then>
            </if>
    
        </sequential>
    </for>