我有一个文件路径列表和每个文件所需的名称
[{"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 函数(包括
: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"
印记。)