以编程方式确定最大文件名长度

Posted

技术标签:

【中文标题】以编程方式确定最大文件名长度【英文标题】:Programmatically determine maximum filename length 【发布时间】:2010-11-13 18:52:15 【问题描述】:

如何确定 linux 机器上的最大文件名长度?

php 编程语言优先。

【问题讨论】:

【参考方案1】:

您想要pathconf or fpathconf,它(还没有)在 PHP 中公开。 (如果是,他们可能是posix_pathconf。)

您也可以使用getconf,这是一个具有相同功能的命令行实用程序界面。在你的系统上试试这个:

$ getconf NAME_MAX /tmp

$ getconf PATH_MAX /tmp

【讨论】:

【参考方案2】:

无需以编程方式确定它。它是 255 字节。

编辑:您可以在极少数文件系统(reiser,我相信)上拥有更长的文件名,但如果您坚持使用 255,您的应用程序将可用于任何 linux 安装。

【讨论】:

【参考方案3】:

大多数 linux 文件系统的最大文件长度为 255。您最好将其用作通用常量并进行修改以适应 linux 中已知的文件系统。这是一个很好的comparison of the file systems 可以使用。最大文件长度列在那里。

【讨论】:

【参考方案4】:

您可以使用常量 PHP_MAXPATHLEN

【讨论】:

【参考方案5】:

我认为你可以使用 realpath()。我不确定最好的方法,但例如:

$maxlen=264-strlen(realpath('index.php')));

264 是 255(最大路径限制)+ 9('index.php' 长度)。因此,从限制中减去当前路径长度可以得到最大当前路径长度。

【讨论】:

您将路径 max len(通常为 4096)与文件名 max len(通常为 255)混淆了。

以上是关于以编程方式确定最大文件名长度的主要内容,如果未能解决你的问题,请参考以下文章

WebApi 2 超出最大请求长度

检测 URL 的长度以确定 UIDocumentPickerViewController 的文件类型

如何确定与 AVAudioPlayer 关联的音频文件的长度

共享首选项 - 单个值的最大长度

以编程方式调用 segue 导致 NSInvalidArgumentException,原因:'UILabel 长度'无法识别的选择器

自定义 uitableViewcell 内部:UILabel 背景超出文本长度(以编程方式)