gpt4 book ai didi

Ruby FileUtils.move Errno::EACCES:权限在 Windows 上被拒绝

转载 作者:可可西里 更新时间:2023-11-01 09:23:19 24 4
gpt4 key购买 nike

如何使用 Ruby 在 Windows 上移动文件?看着 documentation它似乎应该与 FileUtils.move 一起使用。这在 Windows 10 上对我不起作用。

irb(main):001:0> RUBY_VERSION
=> "2.3.0"
irb(main):002:0> require 'fileutils'
=> true
irb(main):003:0> FileUtils.mkdir("first_directory")
=> ["first_directory"]
irb(main):004:0> FileUtils.mkdir("second_directory")
=> ["second_directory"]
irb(main):005:0> FileUtils.touch(File.join("first_directory", "test_file"))
=> ["first_directory/test_file"]
irb(main):006:0> file = File.new(File.join("first_directory", "test_file"))
=> #<File:first_directory/test_file>
irb(main):007:0> FileUtils.move(file, "second_directory")
Errno::EACCES: Permission denied @ rb_file_s_rename - (first_directory/test_file, second_directory/test_file)
from C:/ruby/23-x64/lib/ruby/2.3.0/fileutils.rb:528:in `rename'
from C:/ruby/23-x64/lib/ruby/2.3.0/fileutils.rb:528:in `block in mv'
from C:/ruby/23-x64/lib/ruby/2.3.0/fileutils.rb:1571:in `block in fu_each_src_dest'
from C:/ruby/23-x64/lib/ruby/2.3.0/fileutils.rb:1585:in `fu_each_src_dest0'
from C:/ruby/23-x64/lib/ruby/2.3.0/fileutils.rb:1569:in `fu_each_src_dest'
from C:/ruby/23-x64/lib/ruby/2.3.0/fileutils.rb:517:in `mv'
from (irb):5
from C:/ruby/23-x64/bin/irb.cmd:19:in `<main>'

这是已知的限制吗?还是错误?或者我只是做错了什么?谷歌搜索产生 Linux 系统的 chmod 结果,但我认为这与 Windows 无关(无论如何以管理员身份运行脚本)。

最佳答案

原来问题是 file = File.new(File.join("first_directory", "test_file"))。这实际上打开了文件,它阻止了重命名操作(这是移动的执行方式),因为文件当前正在“使用中”。删除此行并使用文件路径而不是 FileUtils.move 中的对象按预期工作。

这可以通过创建文件对象,然后尝试在资源管理器中重命名文件来类似地观察到:操作无法完成,因为文件已在 ruby​​.exe 中打开...

关于Ruby FileUtils.move Errno::EACCES:权限在 Windows 上被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38342721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com