一个目录类

<?
//目录操作基类
class FileDirectory {
  var $servermode;
  var $serverpath;    //web服务器目录
  var $pagepath;    //当前页目录
  var $path;        //当前目录
  var $ffblk;        //用于存储有关文件的信息
  function FileDirectory() {
    set_time_limit(0);    //设置网页运行时间,0不限
    $this->serverpath = $GLOBALS[DOCUMENT_ROOT]."/";
    $this->path = $this->pagepath = dirname(eregi_replace("//","/",$GLOBALS[SCRIPT_FILENAME]))."/";
    if(eregi("Win32",getenv("SERVER_SOFTWARE")))
      $this->servermode = "WIN32";
  }
  function first_dir() {
    return dirname(eregi_replace("//","/",$GLOBALS[SCRIPT_FILENAME]));
  }
  //获取文件信息
  function file_info($filename) {
    $ar[name] = $filename;
    $ar[type] = filetype($filename);
    $ar[read] = is_readable($filename);
    $ar[write] = is_writeable($filename);
    $ar[exec] = is_executable($filename);
    $ar[time] = date("Y-m-d H:i:s",filemtime($filename));
    $ar[size] = filesize($filename);
    $ar[style] = ($ar[type]=="dir"?"d":"-")
              .($ar[read]?"r":"-")
              .($ar[write]?"w":"-")
              .($ar[exec]?"x":"-");
    return $ar;
  }

  function format_path($path){
    $tar = split("/",$path);
    $sar = split("/",$this->path);
    $t = count($tar);
    $s = count($sar);
    if($tar[$t-1] == "") $t--;
    if($sar[$s-1] == "") $s--;
    $j = 0;
    while($tar[$j] == "..") {
      $j++;
      $s--;
    }
    $p = "";
    for($i=0;$i<$s;$i++)
      $p .= $sar[$i]."/";
    for($i=$j;$i<$t;$i++)
      if($tar[$i] != ".")
        $p .= $tar[$i]."/";
    $this->path = $p;
  }
  //获取目录信息到数组,成功返回时$this->path为目录的全路径
  function array_dir($pathname=".") {
    $old = $this->path;
    if($this->servermode == "WIN32")
      $path = str_replace("\\","/",$pathname);
    else
      $path = $pathname;
    $this->format_path($path);
    if(! ($handle = @opendir($path))) {
      $path = dirname($pathname);
      $handle = opendir($path);
    }
    if(@chdir($this->path)) {
      while ($file = readdir($handle)) {
        $ar[] = $this->file_info($file);
      }
    }else
      $this->path = $old;
    closedir($handle);
    return $ar;
  }
}    //FileDirectory定义结束

?>

<?
//目录对话框
class OpenFileDialog extends FileDirectory {
  var $filter = array("*.*");
  function Execute($path,$statpath) {
    if($path != "") {
      chdir($statpath);
      $this->path = $statpath;
      $ar = $this->array_dir($path);
    }else
      $ar = $this->array_dir(".");
    array_multisort($ar);
echo "
<style>
td{font-size:9pt;}
select{font-size:9pt;}
#box{border:3px outset #ffffff}
</style>
<form action=";
echo $GLOBALS[PHP_SELF];
echo " method=POST>
<table bgcolor=#cccccc cellspacing=0 cellpadding=0>
<tr><td>
<table border=0 id=box>
<tr><td>
";
echo "当前路径 ".$this->path."<br>\n";
echo "<input type=hidden name=statpath value=\"".$this->path."\">\n";

echo "<select name=dirlist size=6 style=\"width:100px\" onChange=\"this.form.submit()\">\n";
for($i=0;$i<count($ar);$i++)
  if($ar[$i][type] == "dir")
    if($ar[$i][name] == ".")
      echo "<option selected>".$ar[$i][name]."\n";
    else
      echo "<option>".$ar[$i][name]."\n";
echo "</select>  \n";
echo "<select size=6 style=\"width:100px\">\n";
for($i=0;$i<count($ar);$i++)
  if($ar[$i][type] == "file")
    echo "<option>".$ar[$i][name]."\n";
echo "
</select>
</td></tr>
</table>
</td></tr>
</table>
</form>
";
  }
}    //OpenFileDialog
?>

<?
//测试

$dir = new OpenFileDialog();
echo "服务器类型 ".$dir->servermode."<br>";
echo "服务器路径 ".$dir->serverpath."<br>";
echo "当前页路径 ".$dir->pagepath."<br>";
echo "当前路径 ".$dir->path."<br>";
$dir->Execute($dirlist,$statpath);
?>

时间: 2024-10-01 02:11:01

一个目录类的相关文章

java +-Java怎么实现一个目录工具类,求大神指点

问题描述 Java怎么实现一个目录工具类,求大神指点 最近我们主管给我布置了一个任务,让我做一个目录类,单位其他同事谁用到就直接调用就可以了.但是现在我一点头绪都没有,不知道咋下手. 首先有个根目录/surfs,根目录下面有ABCD四个子目录,分别点击ABCD四个目录时要进行判断是否初始化,如果已经初始化,会生成16个子目录,子目录也同样这么判断.每个目录都有一个唯一的ID,通过UUID获取.根目录和子目录的关系是 比如根目录是abcdefg,那么他下面的目录依次是abcdefg/cdefg/e

小女子求教::怎样引用不同目录下的一个自定义类

问题描述 各位大虾晚上好:我今晚碰到了一个问题,就是怎样引用不同目录下的一个自定义类,我自定义了一个通用数据操作类:dataoperate.cs,一开始,放到了主文件目录下,统一目录下的文件把他实例化的时候没有问题,但是,把他放到我程序里编自定义的一个文件夹app_code下的时候,就报错说是没有引用,必须把他放到app_code外才可以编译通过,这是怎么回事啊?如何解决?谢谢 解决方案 解决方案二:放在App_Code是正确的.注意一下名称空间解决方案三:顶楼上解决方案四:你的开发工具应该是0

在 lib 下新建一个目录放入 jar 包,tomcat访问不到

问题描述 在 lib 下新建一个目录放入 jar 包,tomcat访问不到 如在lib 下新建一个hibernate 的目录,将heibernate相关的jar包放到里面,编译时正常 ,但是在tomcat 环境下,找不到目录内的jar包. 将这些jar放到 lib目录下又可正常运行, 请问是需要配置哪些地方吗. 解决方案 设置jar包的lib目录 解决方案二: 首先,可以重新发布下项目,看看有没有问题,其次,再试试手动将这个jar添加到类路径下. 解决方案三: 要放到WEB-INF下面,你可以在

如何判断一个url指向的是一个目录?

问题描述 就以一个FTP客户端来说吧,不使用第三方库的话,如何实现FTP的功能?如果能够不用sun.net.ftp.*最好.如果使用java.net.url的话,如何判断一个url指向的是一个文件还是一个文件夹?以及如何获取该文件夹下的filelist?谢谢~~~~ 解决方案 解决方案二:你可以利用那个url得到一个文件对象,然后你在调用File类中isDirectory()测试此抽象路径名表示的文件是否是一个目录.要获得某个文件夹下的FileList也是有相应的方法的File[]listFil

PHP 自动引入一个目录的所有 PHP 文件

   代码如下 复制代码 /*  *引入一个目录的所有文件  *http://www.111cn.net */ function Bing_include_all_php( $folder ){  foreach( glob( "{$folder}/*.php" ) as $filename ) require_once $filename; } 使用方法就是直接调用这个函数,第一个参数放上要引入的相对目录即可. 还有一种办法可以使用魔术方法__autoload来加载  代码如下 复制

怎么做好一个下载类网站

中介交易 SEO诊断 淘宝客 云主机 技术大厅 我们公司最近就是在做一个下载类网站,做了两个月了吧,说实话中间遇见的问题,麻烦也不少,可是最后都找到原因解决了.现在我们的下载系统网站比较的稳定了,权重现在做到2了,那么今天就写下我们做这个下载类网站的心得吧,希望对大家有帮助. 下面我就给大家总结一下吧,不罗嗦,都是重点. 说实话其实现在做个网站很好做,网上都能下载代码.模版,你懂点网站制作稍微改点就是你自己的了,但是你怎么在众多网站中脱颖而出,去把一个网站做好做大做出名,这就是一个问题了. 反正

一个Ajax类

ajax 一个Ajax类function Ajax(url,recvT,stringS,resultF) {    this.url = url;    this.stringS = stringS;    this.xmlHttp = this.createXMLHttpRequest();    if (this.xmlHttp == null) {        alert("erro");        return;    }    var objxml = this.xml

jsp或者说JAVA倒底有多快?这里有一个计时类,可以帮你的忙。同时支持JAVA和JSP。内有例子。

js //作者:sonymusic//原载于豆腐技术站(www.asp888.net)package sony.utils; import java.util.*;import javax.servlet.jsp.*;/*** 一个计时类.* 创建日期:(2000-11-6 13:09:38)* 作者:SonyMusic(sonymusic@china.com)*/public class Timing{private ArrayList nameArray=new ArrayList();pr

如何编写一个ASP类

前几天大佛写了"ASP设计模式",可能有些初学者或者刚刚接触ASP的朋友不一定完全看得明白,偶就整理了一下编写一个ASP类的方法,大部分是从网上找来的.希望对朋友们有帮助. <ASP设计模式>(作者 我佛山人): 首先ASP的类是由事件和方法(它们就是构成类的成员了)构成的,如果大家还没有接触过,可以先看看下面的说明:在 Class 块中,成员通过相应的声明语句被声明为 Private(私有成员,只能在类内部调用) 或 Public(公有成员,可以在类内外部调用) .被声明