gradle如何处理zip文件中的内容替换

如有一个a.zip,该zip中有一个temp.txt文件,其中内容为aaa=123

我想把其中内容aaa替换为bbb,使用gradle要怎么写

阅读 5.9k
2 个回答

自己搞定了,gradle本身的貌似没找到方法

import java.util.zip.*

task xxx {
    def zipName = 'aaa.zip'
    def fileName = 'aaa/bbb/1.txt'
    def zipIn = new File(zipName)
    def zip = new ZipFile(zipIn)
    def zipTemp = File.createTempFile('out', '.zip', new File('./'))
    zipTemp.deleteOnExit()
    def zos = new ZipOutputStream(new FileOutputStream(zipTemp))

    for(e in zip.entries()) {
        def input = zip.getInputStream(e)
        if(!e.name.equalsIgnoreCase(fileName)) {
            zos.putNextEntry(e)
            zos << input.bytes
        } else {
            zos.putNextEntry(new ZipEntry(fileName))
            def br = new BufferedReader(new InputStreamReader(input, 'UTF-8'))
            def sb = new StringBuffer()
            sb << br.text.replace('a', "bbb")
            zos << sb.toString().getBytes('UTF-8')
        }
        zos.closeEntry()
    }

    zos.close()
    zip.close()
    println zipIn.delete()
    zipTemp.renameTo(zipIn)
}
新手上路,请多包涵

你这个不单单只是替换,你这个还是把zip里面的所有文件copy出来再打包zip啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进