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)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。