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

时间:2017-03-17 20:12:53

标签: ruby-on-rails angularjs ruby rubyzip

我有一个应用于angularJS和ruby on rails。

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

-root

----- Sub1的

---------- Sub_Sub1

---------- Sub_Sub2

----------的index.html

-----分公司2

----- abc.html

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

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

#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时面临资源锁定问题。能帮我解决一下这个问题。

1 个答案:

答案 0 :(得分:2)

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

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