存储有关目录的信息

时间:2011-11-11 13:27:39

标签: php

除了foldername之外,有没有办法获取/设置有关目录的信息到实际文件夹本身?

我想设置目录优先级,以便通过为每个文件夹分配一个编号按特定顺序显示文件夹。

3 个答案:

答案 0 :(得分:2)

扩展文件属性可以实现:

  

扩展文件属性是一种文件系统功能,它允许用户将计算机文件与文件系统未解释的元数据相关联,而常规属性的目的是由文件系统严格定义(例如创建和修改时间的权限或记录)。

尝试使用xattr API来获取/设置它们:

手册示例:

$file = 'my_favourite_song.wav';
xattr_set($file, 'Artist', 'Someone');
xattr_set($file, 'My ranking', 'Good');
xattr_set($file, 'Listen count', '34');

/* ... other code ... */

printf("You've played this song %d times", xattr_get($file, 'Listen count')); 

答案 1 :(得分:0)

您肯定可以为NTFS执行此操作:http://en.wikipedia.org/wiki/NTFS#Alternate_data_streams_.28ADS.29 不知道* nix文件系统是否存在这样的功能。

答案 2 :(得分:0)

为什么要将程序逻辑锚定在OS的文件系统中?这不是存储此类信息的正确方法。一个原因是您离开了应用程序域,其他程序可能会覆盖您保存的信息

或者,如果您将应用程序移动到较新的服务器,则可能会遇到无法传输此信息的问题(例如,当新环境具有其他文件系统时)。

假设运行应用程序的特定文件系统也是不好的做法。

更好的方法是将其存储在您的应用程序中(例如数据库,如果您需要它持久化)。

一个简单的数组可以完成这项工作,键为优先级,并且值为一个对象为Directory的数组。

看起来像这样:

array(
    0 => array( // highest prio
        0 => DirObject,
        1 => DirObject,
        2 => DirObject
    ),
    1 => array(
        0 => DirObject,
        1 => DirObject,
        ...
    ), ...

然后,您可以使用展平功能或简单的foreach呈现您的文件夹。并且可以轻松地将其保存为数据库中的序列化/ jsoned字符串。