elixir 创建一个新的 zip 文件并向其中添加文件

问题描述 投票:0回答:1

我有一个文件路径列表和每个文件所需的名称

[{"name1", "C:\\path\file.zip"}, {"name2", "C:\\path\file.zip"}, {"name3", "C:\\path\file.zip"}, {"name4", "C:\\path\file.zip"}]

我想创建一个 zip 文件并将所有这些文件附加到其中,我已尝试以下操作:

def create_zip_and_add_files(zip_filepath, files) do
    case :zip.create(zip_filepath, files) do
      {:ok, _zip_file} ->
        IO.puts("ZIP file created successfully")
        {:ok}

      {:error, reason} ->
        IO.puts("Failed to create ZIP file. Reason: #{reason}")
        {:error, files}
    end

还有这个:

  def create_zip_and_add_files(zip_filepath, files) do
    file_contents = Enum.map(files, fn {name, path} ->
      {name, File.read!(path)}
    end)

    {:ok, zip_file} = :zip.create(zip_filepath, file_contents, [:memory])

    :zip.close(zip_file)
  end

我对这门语言的经验不够,有人可以帮忙吗?如果您能提供删除 zip 文件的代码也会很有帮助。

ty.

erlang elixir
1个回答
0
投票

目前还不清楚什么是“所需的名称”,但对于初学者来说,在调用大多数 函数(包括

:zip.create/2
)时,你应该使用字符列表。

假设您希望文件

a.txt
b.txt
包含在
ab.zip
文件中,则可以使用以下代码。

❯ echo aaa > a.txt
❯ echo bbb > b.txt
❯ iex
iex|💧|1 ▶ :zip.create('ab.zip', ['a.txt', 'b.txt'])
#⇒ {:ok, ~c"ab.zip"}

注意文件名周围的单引号(现在人们可能想对字符列表使用

~c"ab.zip"
印记。)

© www.soinside.com 2019 - 2024. All rights reserved.