Joomla的文件系统提供了对常规文件操作的封装,主要由4个类 JFile,JFolder,JPath,JArchive来实现。本文主要讲解JFolder类的一些常用文件夹操作
代码:
JFolder::copy($src, $dest, $path, $force);
这个函数会将$src指定的文件夹及其所有内容(包括子目录)复制到$dest指定的位置。它会检查原地址和目标地址是否存在且权限是否允许。这个方法支持FTP层操作
代码:
JFolder::create($path, $mode);
这个方法是对PHP的mkdir()方法进行封装,在此基础上增加了权限检查和路径可用性检查。这个方法支持FTP层操作。
代码:
JFolder::move($src, $dest);
这个方法是对PHP的rename()方法进行封装,在此基础上增加了权限检查和路径可用性检查。这个方法支持FTP层操作。
代码:
JFolder::exists($path);
这个函数的实现是对PHP 的is_dir() 函数的封装,如果存在返回true
代码:
JFolder::makeSafe($path);
这个函数会过滤掉文件名中不合法的字符(odd characters),返回一个安全的文件夹名
代码:
JFolder::files($path, $filter = '.', $recurse, $fullpath , $exclude);
这个函数读取指定文件夹中的所有文件。
代码:
JFolder::folders($path, $filter = '.', $recurse, $fullpath , $exclude);
这个函数读取指定文件夹中的所有文件夹。使用方法和JFolder::files一样
JFolder::listFolderTree($path, $filter, $maxLevel = 3, $level = 0, $parent = 0);
它将读取在$path指定的文件夹,并将结果以数组的方法返回,适合于树形显示。您可以指定级别数。文件夹数组如下所示
Array ( [0] => Array ( [id] => 1 [parent] => 0 [name] => administrator [fullname] => g:/joomla_1012/administrator [relname] => g:/joomla_1012/administrator ) [1] => Array ( [id] => 2 [parent] => 1 [name] => backups [fullname] => g:/joomla_1012/administrator/backups [relname] => g:/joomla_1012/administrator/backups ) [2] => Array ( [id] => 3 [parent] => 1 [name] => components [fullname] => g:/joomla_1012/administrator/components [relname] => g:/joomla_1012/administrator/components ) )
本代码演示了如何使用文件系统来做复制移动操作
目标:
读取根目录下images文件夹的内容。创建一个名为jpg的子文件夹,然后images中所有jpg文件移至jpg子文件夹。
实现代码:
<?php // First we set up parameters. $searchpath = JPATH_COMPONENT . '/images'; // Import the folder system library. jimport('joomla.filesystem.folder'); // Then we create the subfolder called jpg. if (!JFolder::create($searchpath . "/jpg")) { // Throw error message and stop script. } // Now we read all jpg files and put them in an array. $jpgFiles = JFolder::files($searchpath, '.jpg'); // Now we need some stuff from the ''JFile:: class'' to move all the files into the new folder. foreach ($jpgFiles as $file) { JFile::move($searchpath . '/' . $file, $searchpath . '/' . 'jpg' . $file); } // Last we move the complete subdir to the root of the component. if (JFolder::move($searchpath . '/'. 'jpg', JPATH_COMPONENT)) { // Redirect with perhaps a happy message. } else { // Throw an error. } ?>