将多个文本文件合并成一个文本文件(并还原为原始文件)使用Lua和PHP。

基本上,我有一个 Lua 客户端和一个 PHP 服务器。假设我在服务器上有一个带有多个文本文件的目录,例如:

  • 服务器上的目录
    • 文件 1
    • 文件 2
    • 文件 3

我想将目录中的所有文件合并为一个文件,但我希望它能够取出文件并使用相应的文件名将文件放回。也就是说,在压缩文件中,每个段落(来自文件的文本)都必须有一个页眉。例如:

压缩的文本文件:

用于标识以备以后使用的文件 1 的页眉
文件 1 的内容在此
用于标识以备以后使用的文件 2 的页眉
文件 2 的内容在此
用于标识以备以后使用的文件 3 的页眉
文件 3 的内容在此

这样就可以使用文件的内容和名称将其放回到原来的位置。

PHP:我需要 PHP 将文件夹的内容压缩到一个文本文件中(所有文件夹项都是文本文件),以便将其发送到 Lua 客户端

Lua:我需要 Lua 能够从 PHP 服务器获取数据并将文件解压到指定的文件夹中

我不想使用实际的压缩算法,我只想将所有文本文件合并成一个文件,然后再将它们放回。谢谢。

点赞
用户869951
用户869951

在 PHP 中使用标记连接文件应该很简单,就像这样:

$fpAll = fopen("fileAll", w+);
$file1 = file_get_contents("file1");
$file2 = file_get_contents("file2");
$h = "# some file separation marker line";
$all = $h + "\n" + $file1 + $h + "\n" + $file2 ...;
... 将 $all 发送给客户端 ...

在 Lua 中,假设有一个 HTTP 库提供响应作为类似文件的对象:

separatonMarker = "# some file separation marker line"
files = {}
fileCount = 0
for line in response:lines() do
     if line == separationMarker then
         nextFile = {}
         fileCount = fileCount + 1
         files[fileCount] = nextFile
     else
         table.insert(nextFile, line) -- 追加到末尾
     end
end

如果要将文件保存到本地,您需要在创建新 nextFile 之前打开一个文件,并将每行数据从 nextFile 保存到该文件中。

2014-02-06 22:37:34