使用Zipfilegenerator类,Ruby生成zip时的资源锁定

我在railsJS和ruby轨道上有一个应用程序。

我通过代码生成子文件夹和html文件。 就像我的文件夹结构一样

-根

—– Sub1的

———- Sub_Sub1

———- Sub_Sub2

———-的index.html

—–分公司2

—– abc.html

我通过Zipfilegenerator生成了目录的zip文件。

我已经创建了这个function,以便在生成目录之前系统检查是否存在任何具有相同名称的先前目录,然后它将删除该目录,然后生成新目录。 这是我删除文件夹和文件的代码。

#delete all files Dir.glob("path/to/dir/.") do |rb_file| File.delete(rb_file) end FileUtils.rm_rf("path/to/dir/") #delete all sub directory FileUtils.mkdir("path/to/dir/") #create root directory 

这是创建zip的代码

 zf = ZipFileGenerator.new(directory_to_zip, output_file) zf.write() 

现在我有一个奇怪的问题,第一次一切正常工作生成zip文件生成但第二次系统无法删除第一次尝试中创建的根和子文件夹中的文件。

我已经调查了这个问题,发现当我评论zip创建代码时,文件被成功删除了。

所以我在从目录生成zip时面临资源锁定问题。 能帮我解决一下这个问题吗?

我用这个代码解决了它。 我已经更改了rubyzip类中的代码

 disk_file = File.open(diskFilePath, "rb") io.get_output_stream(zipFilePath) { |f| f.puts(disk_file.read()) } disk_file.close