ruby - 复制文件(不使用 FileUtils)

标签 ruby file io copy marshalling

所以我认为Marshal是解决这个问题的最好方法。我加载文件并立即转储它。但我收到这个错误: “不兼容的编码(marshal)文件格式(无法读取)需要格式版本 4.8;给出 91.112”

  def self.copy_file(src, dest)
    File.open(src) do |src_file|
      File.open(dest, 'w') do |dest_file|
        Marshal.dump(Marshal.load(src_file), dest_file)
      end
    end
  end

我无法使用 FileUtils,因为我使用某种没有该库的“Ruby 变体”。我不知道有任何免费的独立且可重新分发的 FileUtils.dll。即使是这样,我仍然希望我的脚本没有任何额外的 .dll 文件。 如果没有 FileUtils,File.copy() 似乎就不存在。

最佳答案

怎么样:

def self.copy_file(src, dest)
  File.write(dest, File.read(src))
end

或者对于没有 File.write 的更古老版本的 ruby​​:

def self.copy_file(src, dest)
  File.open(dest, 'w') { |f| f.write(File.read(src)) }
end

关于ruby - 复制文件(不使用 FileUtils),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24121446/

相关文章:

ruby - RSpec should_receive 没有到达类中的方法

macos - 批量删除文件扩展名 OSX

android - 在应用程序之间共享文件

java - 要从 Java 中的 DataInputStream 读取的未知缓冲区大小

ruby - 使用模块中定义的类方法在同一模块中扩展类

ruby - 如何向 Ruby 中的异常消息添加信息?

html - 如何使用 Watir 直接从文件读取(解析)html?

Ruby I/O 内部缓冲区大小

c - 如何解析用户的输入以确定在 C 中打印结果的位置?

ios - Appium::TouchAction.new.tap 无法正常工作