Elixir语言中 File.cp_r 相关用法介绍如下。
用法:
cp_r(source, destination, callback \\ fn _, _ -> true end)
@spec cp_r(Path.t(), Path.t(), (Path.t(), Path.t() -> boolean())) ::
  {:ok, [binary()]} | {:error, posix(), binary()}
递归地将source 中的内容复制到destination,保持源目录结构和模式。
如果source 是文件或指向它的符号链接,则destination 必须是指向现有文件的路径、指向某个文件的符号链接或指向不存在文件的路径。
如果source 是一个目录或指向它的符号链接,那么destination 必须是一个存在的directory 或指向某个目录的符号链接,或指向不存在的目录的路径。
如果源是文件,它会将 source 复制到 destination 。如果source 是一个目录,它会将源代码中的内容复制到destination 目录中。
如果目标中已存在文件,则调用 callback 。 callback 必须是一个接受两个参数的函数:source 和 destination。如果应覆盖现有文件,则回调应返回true,否则返回false。
此函数在复制文件时可能会失败,在这种情况下,它将使目标目录处于脏状态,其中已经复制的文件不会被删除。
该函数在成功的情况下返回{:ok, files_and_directories},files_and_directories 列出所有复制的文件和目录,没有特定的顺序。否则返回{:error, reason, file}。
注意:Unix-like 系统中的命令cp 的行为会有所不同,具体取决于destination 是否为现有目录。我们已选择明确禁止这种行为。如果source 是file 并且destination 是目录,则将返回{:error, :eisdir}。
例子
# Copies file "a.txt" to "b.txt"
File.cp_r("a.txt", "b.txt")
# Copies all files in "samples" to "tmp"
File.cp_r("samples", "tmp")
# Same as before, but asks the user how to proceed in case of conflicts
File.cp_r("samples", "tmp", fn source, destination ->
  IO.gets("Overwriting #{destination} by #{source}. Type y to confirm. ") == "y\n"
end)
相关用法
- Elixir File.rm用法及代码示例
 - Elixir File.rmdir用法及代码示例
 - Elixir File.exists?用法及代码示例
 - Elixir File.touch!用法及代码示例
 - Elixir File.stream!用法及代码示例
 - Elixir File.rename用法及代码示例
 - Elixir File.open用法及代码示例
 - Elixir File.rm_rf用法及代码示例
 - Elixir File.regular?用法及代码示例
 - Elixir File.touch用法及代码示例
 - Elixir File.dir?用法及代码示例
 - Elixir File用法及代码示例
 - Elixir Float.to_charlist用法及代码示例
 - Elixir Float.ratio用法及代码示例
 - Elixir Float.to_string用法及代码示例
 - Elixir Function.identity用法及代码示例
 - Elixir Float.ceil用法及代码示例
 - Elixir Float.pow用法及代码示例
 - Elixir Function用法及代码示例
 - Elixir Function.info用法及代码示例
 - Elixir Function.capture用法及代码示例
 - Elixir Float.round用法及代码示例
 - Elixir Float.floor用法及代码示例
 - Elixir Float.parse用法及代码示例
 - Elixir StringIO.flush用法及代码示例
 
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 File.cp_r(source, destination, callback \\ fn _, _ -> true end)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
