yhxhappy 发表于 2021-10-30 14:53:43

[已解决] 如何在 FTP 查找文件或目录是否存在?

本帖最后由 yhxhappy 于 2021-11-15 16:15 编辑

大家好。

我需要检查FTP中是否存在某个文件或目录。我知道可以通过 _FTP_ListToArray 获取 文件/目录 数组,再在数组中搜索,但如果文件数很多的时候会影响效率。

请问有没有直接方法,类似 FileExists 的方式查找?

862228699 发表于 2021-11-1 15:47:27

谁说数组效率低

yhxhappy 发表于 2021-11-1 22:00:25

862228699 发表于 2021-11-1 15:47
谁说数组效率低

如果目录中只有一两百个文件还好说。

我的FTP是用来存放日志文件,文件数量慢慢积累至少几十万个。我现在没有这么多文件试验效率,但我认为肯定不会快。

yhxhappy 发表于 2021-11-2 21:15:28

看到有 _FTP_Command 函数,但写的比较简单,不了解用法。

网上搜索了一些方法,比如 rstatus ,返回的结果只有0,1,-1等。不知道怎么获取返回值。

yhxhappy 发表于 2021-11-15 16:14:47

已找到解决办法。通过 _FTP_Command 实现,但还是不知道怎么获取它的返回值。

_FTP_Command($Conn, "SIZE FILE")"SIZE FILE" 获取文件的尺寸

如:_FTP_Command($Conn, "SIZE abc.txt"),返回 1 说明文件存在,返回 0 说明文件不存在。

afan 发表于 2021-11-15 16:20:31

yhxhappy 发表于 2021-11-15 16:14
已找到解决办法。通过 _FTP_Command 实现,但还是不知道怎么获取它的返回值。

_FTP_Command($Conn, "SIZ ...

$rt = _FTP_Command($Conn, "SIZE abc.txt")
$rt 不就是返回值?

yhxhappy 发表于 2021-12-14 14:57:56

afan 发表于 2021-11-15 16:20
$rt = _FTP_Command($Conn, "SIZE abc.txt")
$rt 不就是返回值?

$rt = _FTP_Command($Conn, "SIZE abc.txt")

$rt只是返回这个命令有没有执行成功,0失败,1成功

_FTP_GetLastResponseInfo($Err, $sFileSize)
$sFileSize就是返回值

afan 发表于 2021-12-14 15:34:22

yhxhappy 发表于 2021-12-14 14:57
$rt = _FTP_Command($Conn, "SIZE abc.txt")

$rt只是返回这个命令有没有执行成功,0失败,1成功


你上面说的:
如:_FTP_Command($Conn, "SIZE abc.txt"),返回 1 说明文件存在,返回 0 说明文件不存在。
跟你现在说的:
$rt只是返回这个命令有没有执行成功,0失败,1成功
。。。。
看来你对返回值是有什么误解~
页: [1]
查看完整版本: [已解决] 如何在 FTP 查找文件或目录是否存在?