當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Elixir File.cp_r用法及代碼示例


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 目錄中。

如果目標中已存在文件,則調用 callbackcallback 必須是一個接受兩個參數的函數:sourcedestination。如果應覆蓋現有文件,則回調應返回true,否則返回false

此函數在複製文件時可能會失敗,在這種情況下,它將使目標目錄處於髒狀態,其中已經複製的文件不會被刪除。

該函數在成功的情況下返回{:ok, files_and_directories}files_and_directories 列出所有複製的文件和目錄,沒有特定的順序。否則返回{:error, reason, file}

注意:Unix-like 係統中的命令cp 的行為會有所不同,具體取決於destination 是否為現有目錄。我們已選擇明確禁止這種行為。如果sourcefile 並且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-lang.org大神的英文原創作品 File.cp_r(source, destination, callback \\ fn _, _ -> true end)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。