file_dir.fn.php
/**
* 遍历目录文件 输出 ul li html格式
*/
function tree($directory) {
if(is_dir($dfairectory)) {
//返回一个 Directory 类实例
$mydir = dir($directory);
echo "<ul>\n";
//从目录句柄中读取条目
while($file = $mydir->read()) {
if(is_dir("$directory/$file") && $file != "." && $file != "..") {
echo "<li><font color=\"#ff00cc\"><b>$file</b></font></li>\n";
//递归读取目录
tree("$directory/$file");
} elseif ($file != "." && $file != "..") {
echo "<li>$file</li>\n";
}
}
echo "</ul>\n";
// 释放目录句柄
$mydir->close();
} else {
echo $directory . '<br>';
}
}
<?php
/**
* 文件相关处理函数
*
* @created 2016-06-13
* @author boxcore
*/
/**
* 格式化容量大小
*
* @author boxcore
* @date 2015-06-26
* @param 文件大小 $size 格式Bytes
* @return string
*/
function format_size($size){
if ($size >= 1073741824){
$size = round($size / 1073741824 * 100) / 100 . ' GB';
}
elseif ($size >= 1048576){
$size = round($size / 1048576 * 100) / 100 . ' MB';
}
elseif ($size >= 1024){
$size = round($size / 1024 * 100) / 100 . ' KB';
}
else{
$size = $size . ' Bytes';
}
return $size;
}
/**
* 生成文件目录 (无返回值)
*
* @author boxcore
* @date 2016-04-26
* @param string $file 文件绝对路径
*/
function mk_file_dir($file = ''){
$str = substr( $file, 0, strrpos($file,'/') );
mkdirs($str);
}
/**
* 递归生成目录
*
* @author boxcore
* @date 2016-04-26
* @param string $dir 目录地址
* @param integer $mode
* @return bool
*/
if(!function_exists('mkdirs')){
function mkdirs($dir,$mode=0777) {
if( ! is_dir( $dir ) ) {
if( ! mkdirs( dirname($dir) ) ) {
return false;
}
if( ! mkdir($dir,$mode) ) {
return false;
}
}
return true;
}
}
/**
* 高效率计算文件行数
*
* @author boxcore
* @date 2016-04-26
* @param string $file
* @return int
*/
function count_line($file){
$fp=fopen($file, "r");
$i=0;
while(!feof($fp)) {
//每次读取2M
if($data=fread($fp,1024*1024*2)){
//计算读取到的行数
$num=substr_count($data,"n");
$i+=$num;
}
}
fclose($fp);
return $i;
}
function append_to_log($content, $url)
{
if ( !($fp = @fopen($url, "a")) ) {
return false;
}
$now = date('Y-m-d H:i:s');
fwrite($fp, "$now $content\n");
fclose($fp);
return true;
}
/**
* 格式化获取文件大小(未完成)
*
* @author boxcore
* @date 2016-09-29
* @param string $file_url [description]
* @return [type] [description]
*/
function get_file_size($filename=''){
if(!$filename) return false;
return filesize($filename);
}
/**
* 获取文件长度(未完成)
*
* @author boxcore
* @date 2016-09-29
* @param [type] $filename [description]
* @return [type] [description]
*/
function get_file_lenth($filename){
// 文件已经在内存中,用 strlen 计算长度
$content = file_get_contents($filename);
return strlen($content);
}
/**
* 获取文件末尾n行内容(未完成)
*
*
* @author boxcore
* @date 2016-09-29
* @param [type] $file [description]
* @param integer $num_to_get [description]
* @return [type] [description]
* @url http://ju.outofmemory.cn/entry/101499
*/
function ftail($file, $num_to_get=10)
{
$fp = fopen($file, 'r');
$position = filesize($file);
fseek($fp, $position-1);
$chunklen = 4096;
while($position >= 0){
$position = $position - $chunklen;
if ($position < 0) {
$chunklen = abs($position);
$position=0;
}
fseek($fp, $position);
$data = fread($fp, $chunklen). $data;
if (substr_count($data, "\n") >= $num_to_get + 1){
preg_match("!(.*?\n){".($num_to_get-1)."}$!", $data, $match);
return $match[0];
}
}
fclose($fp);
return $data;
}