文件及目录相关处理问题

2017-09-03  本文已影响0人  陈智涛

一、文件的读写操作

打开文件

fopen

打开文件或者 URL
resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )
fopen中mode的几种参数介绍:
'r':只读方式打开,将文件指针指向文件头。
'r+':读写方式打开,将文件指针指向文件头。
'w':写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

屏幕快照 2017-09-03 下午12.56.38.png

写入函数

1. fwrite

写入文件(可安全用于二进制文件)
int fwrite ( resource $handle , string $string [, int $length ] )

fwrite() 把 string 的内容写入 文件指针 handle 处。
fwrite() 返回写入的字符数,出现错误时则返回 FALSE 。

2.fputs

fputs — fwrite的别名

读取函数

1.fread

读取文件(可安全用于二进制文件)
string fread ( resource $handle , int $length )
返回所读取的字符串, 或者在失败时返回 FALSE。
fread() 从文件指针 handle 读取最多 length 个字节。 该函数在遇上以下几种情况时停止读取文件:

2.fgets

从文件指针中读取一行
string fgets ( resource $handle [, int $length ] )
参数 length:
从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。

3.fgetc:

从文件指针中读取字符

关闭文件

fclose

不需要fopen打开的函数

file_get_content

file_put_content

其他读取函数

file

把整个文件读入一个数组中

readfile

输出文件,读取文件并写入到输出缓冲。

访问远程文件

屏幕快照 2017-09-03 下午1.22.58.png

二、目录相关操作

名称相关

basename

返回路径中的文件名部分

dirname

返回路径中的目录部分

pathinfo

返回文件路径的信息

<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>

输出

/www/htdocs/inc
lib.inc.php
php
lib.inc

目录读取

opendir

打开目录句柄
resource opendir ( string $path [, resource $context ] )
打开一个目录句柄,可用于之后的 closedir()readdir()rewinddir() 调用中。

closedir

关闭目录句柄

readdir

readdir — 从目录句柄中读取条目

rewinddir

倒回目录句柄

目录读取

rmdir
前提是该目录为空,没有文件或者其他目录

文件大小

filesize

文件拷贝

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

文件移动

rename
bool rename ( string $oldname , string $newname [, resource $context ] )

文件删除

unlink
bool unlink ( string $filename [, resource $context ] )

文件类型

filetype
文件或者目录

文件锁

flock

示例

1、在文件的开头写入helloworld 执行一次,写入一次,不得覆盖后面的内容

<?php

// 打开文件
//
// 将文件的内容读取出来,在开头加入Hello World
//
// 将拼接好的字符串写回到文件当中
//
// Hello 7891234567890
//
$file = './hello.txt';

$handle = fopen($file, 'r');

$content = fread($handle, filesize($file));

$content = 'Hello World'. $content;

fclose($handle);

$handle = fopen($file, 'w');

fwrite($handle, $content);

fclose($handle);

2、遍历目录

<?php
$dir = "./dirtest";
function loopDir($dir){
    $handle = opendir($dir);
    while(false !== ($file=readdir($handle)) ){  
        if($file != '.' && $file != '..' && $file != '.DS_Store'){
            echo $file ."\n";
            if(filetype($dir.'/'.$file) == 'dir'){
                loopDir($dir. '/'. $file);
            }
        }

    }
    closedir($handle);

    
}
loopdir($dir);
上一篇下一篇

猜你喜欢

热点阅读