使用 Zipfilegenerator class、Ruby 生成 zip 时的资源锁定
resource lock while generating the zip using Zipfilegenerator class, Ruby
我在 angularJS 和 ruby 在 rails 有一个应用程序。
我正在通过代码生成子文件夹和 html 文件。就像我的文件夹结构一样
-根目录
-----Sub1
----------Sub_Sub1
----------Sub_Sub2
------------index.html
-----Sub2
-----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 时遇到资源锁定问题。你能帮我解决这个问题吗?
我已经用这段代码解决了。
我已经更改了 rubyzip class
中的代码
disk_file = File.open(diskFilePath, "rb")
io.get_output_stream(zipFilePath) { |f|
f.puts(disk_file.read())
}
disk_file.close
我在 angularJS 和 ruby 在 rails 有一个应用程序。
我正在通过代码生成子文件夹和 html 文件。就像我的文件夹结构一样
-根目录
-----Sub1
----------Sub_Sub1
----------Sub_Sub2
------------index.html
-----Sub2
-----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 时遇到资源锁定问题。你能帮我解决这个问题吗?
我已经用这段代码解决了。 我已经更改了 rubyzip class
中的代码disk_file = File.open(diskFilePath, "rb")
io.get_output_stream(zipFilePath) { |f|
f.puts(disk_file.read())
}
disk_file.close