宗小宗-PHP程序猿

欢迎各位朋友前来,如果我的文章中有不对的地方,还望指正;如需转载,请注明原处

PHP文件相关函数试题

一.问答题

1.返回路径中的文件名部分的函数是什么?

2.改变文件模式的函数是什么?

3.拷贝文件的函数是什么?

4.返回路径中的目录部分的函数是什么?

5.将上传的文件移动到指定位置的函数是? 

6.返回规范化的绝对路径名的函数是什么?

 

二.编程题

1.请用三种方法写出函数,获取某个目录下所有文件和文件夹名的关联数组,要求给函数传一个路径参数,返回一个数组,格式为:array('dir'=>array('dir1','dir2'...),'file'=>array())

2.封装一个系统文件类,类中方法包括:判断文件是否存在,获取文件内容(包括锁和不锁文件),输入内容到一个文件,追加内容到文件,删除文件,移动文件,拷贝文件,文件的文件名部分,文件的目录部分,文件的后缀名部分,文件的mine类型,文件的大小,获取文件上一次修改时间,判断是否为路径,判断文件是否可写,判断是否为文件,创建文件夹,复制一个目录,删除一个目录。

 


 

答案

一.问答题

1.string basename ( string $path [, string $suffix ] )

2.bool chmod ( string $filename , int $mode )

3.bool copy ( string $source , string $dest [, resource $context ] )

4.string dirname ( string $path )

5.bool move_uploaded_file ( string $filename , string $destination )

6.string realpath ( string $path ) 

 

二.编程题

1

function scanDir1($dir = './'){

    $result['dir'] = $result['file'] = array();

    if(!is_dir($dir)) return $result;

    foreach (scandir($dir) as $df) {
        if($df==='.'||$df==='..') continue;
        if(is_dir($dir.'/'.$df)) $result['dir'][] = $df;
        if(is_file($dir.'/'.$df)) $result['file'][] = $df;
    }

    return $result;
}

function scanDir2($dir = './'){

    $result['dir'] = $result['file'] = array();

    if(!is_dir($dir)) return $result;

    $handle = dir($dir);
    while (($df = $handle -> read()) !== false) {
        if($df==='.'||$df==='..') continue;
        if(is_dir($dir.'/'.$df)) $result['dir'][] = $df;
        if(is_file($dir.'/'.$df)) $result['file'][] = $df;
    }

    $handle -> close();
    return $result;
}

function scanDir3($dir = './'){

    $result['dir'] = $result['file'] = array();

    if(!is_dir($dir)) return $result;

    $handle = opendir($dir);
    while (($df = readdir($handle)) !== false) {
        if($df==='.'||$df==='..') continue;
        if(is_dir($dir.'/'.$df)) $result['dir'][] = $df;
        if(is_file($dir.'/'.$df)) $result['file'][] = $df;
    }

    return $result;
}

 

2.

<?php

class FileSystem{

    public function exists($path)
    {
        return file_exists($path);
    }

    public function isFile($path)
    {
        return is_file($path);
    }

    public function isDir($path)
    {
        return is_dir($path);
    }

    public function get($path,$lock = false)
    {
        if(!$this->exists($path)) return '';
        if($lock){
            return $this -> lockGet($path);
        }else{
            return file_get_contents($path);
        }
    }

    private function lockGet($path)
    {
        $contents = '';
        $handle = fopen($path, 'r');
        if($handle){
            try {
                if(flock($handle, LOCK_SH)){
                    while (!feof($handle)) {
                        $contents .= fread($handle, 1048576);
                    }
                }
            } finally {
                fclose($handle);
            }
        }
        return $contents;
    }

    public function put($path,$contents,$lock = false)
    {
        return file_put_contents($path,$contents,$lock?LOCK_SH:0);
    }

    public function append($path,$contents)
    {
        return file_put_contents($path,$contents,FILE_APPEND);
    }

    public function delete($path)
    {
        if($this->isFile($path)){
            return unlink($path);
        }else if($this->isDir($path)){
            foreach (scandir($path) as $df) {
                if($df!=='.'||$df!=='..'){
                    $this->delete($path.'/'.$df);
                }
            }
            rmdir($path);
        }
    }

    public function move($path,$target)
    {
        return rename($path,$target);
    }

    public function copy($path,$target)
    {
        return copy($path,$target);
    }

    public function name($path)
    {
        return pathinfo($path,PATHINFO_FILENAME);
    }

    public function dirname($path)
    {
        return pathinfo($path,PATHINFO_DIRNAME);
    }

    public function extension($path)
    {
        return pathinfo($path,PATHINFO_EXTENSION);
    }

    public function type($path)
    {
        return filetype($path);
    }

    public function size($path)
    {
        return filesize($path);
    }

    public function lastModified($path)
    {
        return filemtime($path);
    }

    public function isWritable($path)
    {
        return is_writable($path);
    }

    public function makeDir($path,$mode = 0755)
    {
        return @mkdir($path,$mode);
    }
}

 

posted @ 2016-08-08 20:58  宗小宗  阅读(659)  评论(0编辑  收藏  举报