php文件目录操作相关

1.打开文件函数

fopen():用于打开一个文件,打开时需要指定打开模式

打开模式

如果文件不存在,不会自动创建

r:只读模式打开,并且将文件指针指向文件内容开头

r+:读写打开,并且将文件指针指向文件内容开头;

 

如果文件不存在,则会自动创建

w:只写模式打开,并且将文件大小设置为0(清空文件内容)

w+:读写模式。

 

如果文件不存在,则会自动创建

a:追加的写入方式,并且将文件的指针指向文件的末尾

a+:追加的读写模式

 

x:以写入方式进行打开,并且将文件指针指向文件开头。如果文件存在,则会报一个warning的错误,并且fopen返回一个false.如果文件不存在,则会创建

X+:读写模式

b:打开一个二进制文件

t:Windows 下提供了一个文本转换标记("t")可以透明地将 \n 转换为 \r\n

注释:不同的操作系统家族具有不同的行结束习惯。当写入一个文本文件并想插入一个新行时,需要使用符合操作系统的行结束符号。基于 Unix 的系统使用 \n 作为行结束字符,基于 Windows 的系统使用 \r\n 作为行结束字符,基于 Macintosh 的系统使用 \r 作为行结束字符。 如果写入文件时使用了错误的行结束符号,则其它应用程序打开这些文件时可能会表现得很怪异。

Windows 下提供了一个文本转换标记("t")可以透明地将 \n 转换为 \r\n。与此对应还可以使用 "b" 来强制使用二进制模式,这样就不会转换数据。要使用这些标记,要么用 "b" 或者用 "t" 作为 mode 参数的最后一个字符。

默认的转换模式依赖于 SAPI 和所使用的 PHP 版本,因此为了便于移植鼓励总是指定恰当的标记。如果是操作纯文本文件并在脚本中使用了 \n 作为行结束符,但还要期望这些文件可以被其它应用程序例如 Notepad 读取,则在 mode 中使用 "t"。在所有其它情况下使用 "b"。

在操作二进制文件时如果没有指定 "b" 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。

注释:为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 "b" 标记。

注释:再一次,为移植性考虑,强烈建议你重写那些依赖于 "t" 模式的代码使其使用正确的行结束符并改成 "b" 模式。

 

 

2.写入文件函数

fwrite():用于写入文件。

fwrite() 的第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串。

$file = fwrite($handle,'11');  //11

fputs(): fwrite() 函数的别名

 

3.读取文件函数

fread():读取打开的文件。

fread() 的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。

如下 PHP 代码把 "webdictionary.txt" 文件读至结尾:

fread($myfile,filesize("webdictionary.txt"));

 

fgets():用于从文件读取单行。

fgetc:获取一个字符(在调用 fgetc() 函数之后,文件指针会移动到下一个字符。)

关闭文件函数:

fclose():关闭打开的文件

feof() :检查是否已到达 "end-of-file" (EOF)。

注释:用完文件后把它们全部关闭是一个良好的编程习惯。您并不想打开的文件占用您的服务器资源。

fclose($handle) 需要待关闭文件的名称(或者存有文件名的变量):

5.不需要文件打开的函数

file_get_contents($filename):把整个文件读入一个字符串中

file_put_contents($filename,$data):把一个字符串写入文件中,并且清空原来的文件如果文件不存在,则创建一个新文件。

 

6.其他读取函数

file($filepath):整个文件读入一个数组中。

readfile():读入一个文件并写入到输出缓冲

 

7.访问远程文件

开启allow_url_fopen,http协议连接只能使用只读,ftp协议可以使用只读或者只写

 

8.名称相关

basename(path,suffix):返回路径中的文件名部分。

dirname(path):返回路径中的目录部分

pathinfo(path):以数组的形式返回文件路径的信息

pathinfo() 返回一个关联数组包含有 path 的信息。

包括以下的数组元素:[dirname][basename][extension]

 

9.目录读取

opendir($path):打开目录句柄。

readdir():返回目录中下一个文件的文件名。

closedir($dir_handle):关闭目录句柄

rewinddir($dir_handle):重置由 opendir() 创建的目录句柄

10.目录的操作

rmdir($path):尝试删除 dir 所指定的目录。 该目录必须是空的,而且要有相应的权限。

mkdir($path):尝试新建一个由 path 指定的目录。默认的 mode 是 0777,意味着最大可能的访问权。

文件大小:filesize()

磁盘空间大小:

disk_free_space():返回目录的可用空间。

disk_total_space():返回一个目录的磁盘总容量。

文件拷贝:copy($yuanwenjian,$mubiaowenjian):返回一个目录的磁盘总容量。

删除文件:unlink($filename)

文件类型:filetype($filename)

重命名文件或者目录:rename($oldname,$newname)  //不仅可以重命名,还可以移动位置。和mv一样

11.文件属性:

file_exists(path):检查文件或目录是否存在。

is_dir():判断指定的文件名是否是一个目录。

is_readable():判断文件是否可读。

is_writable():判断文件是否可写

is_executable():判断文件是否可执行

clearstatcache():清除文件状态缓存。

12文件锁:

flock():锁定或释放文件

13. 文件指针:

ftell():返回文件指针的读/写位置

fseek():在打开的文件中定位。

rewind():倒回文件指针的位置。

$file = fopen("test.txt","r");

// 输出当前位置

echo ftell($file);

//改变文件指针的位置

fseek($file,"15");

//把文件指针设定为 0

rewind($file);

fclose($file);

 

1:在文件的开头加入hello world;

$filename = './test.txt';
$handle = fopen($filename,'r');
$content = fread($handle,filesize($filename));
$handle = fopen($filename,'w');
$data = 'hello world'.$content;
$result = fwrite($handle,$data);
fclose($handle);
if($result)
{
    echo "成功";
}

2:遍历指定文件夹下面的所有文件 

function lsdir($dirname)
{
$files = array();
    if(is_dir($dirname))
    {

        if($handle = opendir($dirname)) {
            while (($filename = readdir($handle)) !== false) {  //!==是因为有目录名为0
                
if($filename!='.' && $filename!='..')
                {
                    //echo $filename.PHP_EOL;  输出所有文件名和文件夹
                    
if(is_dir($dirname.'/'.$filename))
                    {
                        //lsdir($dirname.'/'.$filename);
                        
$files[$filename] =  lsdir($dirname.'/'.$filename);

                    }else{
                        $files[] = $dirname."/".$filename;
                    }
                }
            }
        }
        closedir($handle);
    }
return $files;
}
$dirname = './test_dir';
var_dump( lsdir($dirname));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值