Renaming a file inside a zip


Can anyone help me or give me any clue on how to rename a file (or folder) inside a zip file without having to unzip it first. I'm trying to do this using the rubyzip gem without luck.



You must require 'zip/zipfilesystem' and'') do |zipfile|   zipfile.file.rename 'orignal_name.txt', 'new_name.txt' end

And this is it, for more information see the Zip::ZipFileSystem class documentation.


Franco Catena.

Hi Franco,

Thanks for your reply, but still it ain't working for. I need to rename a folder not a file. It works fine for file but not for folders. I tried this and it correctly renamed the file build.yml to builder.yml, BUT the folder wasn't rename, instead it created a new folder in the same level of the one I wanted to rename. Any clues?'/home/elioncho/Desktop/'){|zf|       parent_folder = zf.get_entry('Test/')       file = zf.get_entry('Prueba/build.yml') = 'Prueba/testing/' = 'Prueba/builder.yml'     }

I copied a wrong code, here it is. As I say before it only works for renaming the file not the folder.'/home/elioncho/Desktop/'){|zf|       parent_folder = zf.get_entry('Test/')       file = zf.get_entry('Test/build.yml') = 'Testing/' = 'Test/builder.yml'     }

There is no method to directly rename a directory, you must use the rename in every file between the directory like this:'') do |zipfile|   zipfile.file.rename 'original_dir/orignal_name.txt', 'new_dir/ original_name.txt' end

And after that you can remove the original directory.


Franco Catena.