PHP基础语法–目录与文件【六】

PHP基础语法–目录与文件【六】

一:目录操作

1.
解析目录路径:basename()函数返回路径的的文件名部分

//文件名包含:文件的名称+文件的扩展名(后缀)
$path = “c:\AppSerc\www\Basic6\Demo1.php”; //绝对路径

echo ‘path:’.basename($path);

2.
获取文件的目录:dirname()函数返回路径目录部分。

$path = “c:\AppSerc\www\Basic6\Demo1.php”; //绝对路径

echo ‘path:’.dirname($path);

3.
关于路径的信息:pathinfo()函数创建一个关联数组,其中包括:目录名、基本名和扩展名。

$path = “c:\AppSerc\www\Basic6\Demo1.php”; //绝对路径

$arr_path = pathinfo($path);
print_r($arr_path);
Array
(
[dirname] => c:\AppSerc\www\Basic6
[basename] => Demo1.php
[extension] => php
[filename] => Demo1
)

4.
绝对路径:realpath()函数将path中所有的符号链接和相对路径引用装换为相应的硬链接和绝对路径。

$p = ‘./1.php’;
echo realpath($p);//D:\xampp\htdocs\test\php\1.php

二: 磁盘、目录和文件计算。

1. 确定文件大小: filesize()函数返回指定文件字节大小。

$path = “c:\AppSerc\www\Basic6\Demo1.php”; //绝对路径

echo filesize($path);
echo round(filesize($p)/1024,2).’kb’;
round对浮点数进行四舍五入

2. 计算磁盘可用空间
disk_free_space()函数返回执行的目录所在磁盘分区可用的空间

$drive = ‘C:’;
echo round(disk_free_space($drive)/1024/1024,2).’MB’

3. 计算磁盘总容量:disk_total_space(); 函数返回指定目录所在磁盘分区总容量

$dirce = ‘C:’;
echo round(disk_total_space($drive)/1024/1024,2).’MB’

4. 确定文件最后访问时间。 采用unix时间戳 fileatime
$file = “c:\AppSerc\www\Basic6\Demo1.php”;
echo fileatime($flie);

调整时区
data_default_timezone_set(‘Asia/Shanghai’);

格式化时间
data(‘Y-m-d,H:i:s’,unix时间戳);

5. 确定文件最后改变时间。 采用unix时间戳。
文件的所有者,权限修改时间
filectime()

6. 确定文件最后修改时间:filemtime():返回文件最后修改时间。
文件中里面内容修改时间。

三: 文件处理 (文件可以是网络文件也可以是本地文件,也可以进行post get模拟)

1. 资源类型(resource)这个词可以与发起输入或者输出流的实体联系起来。标准输入或者输出、文件和网络套接字都是资源的例子。

所以看到本节所介绍的函数都是在资源处理的上下中讨论。而不是文件处理。

a:将数据写入一个文件,有三个步骤
1.打开这个文件。如果文件不存在,需要创建他
2.将数据写入这个文件
3.关闭这个文件

b: 从一个文件中读出数据,也有三个步骤
1.打开这个文件。如果这个文件不能打开就应该意识到这点并且正确的退出
2.从文件中读出数据
3.关闭这个文件。

2. 打开文件

在php中打开一个文件,可以使用fopen()。当打开一个文件的时候,还需要执行如何使用它。也就是文件模式。

选择文件模式:当打开一个文件的时候。有三种选择。
a:打开了文件为了只读、只写或者读和写
b:如果要写一个文件。你可能希望覆盖所有已有的文件内容,或者仅仅将数据追加到文件末尾。如果文件已经存在,也可以终止程序的执行而不是覆盖该文件。
c:如果希望在一个区分了二进制方式和纯文本方式的系统写一个文件。还必须制定采用的方式。

函数fopen()支持以上3中方式的组合。

$fp = fopen(
文件路径,
文件模式,
是否在include_path中搜索一个文件名,
允许文件名以协议名称开始(如http://)

)

2.2 打开写入文件
w 只写 (创建一行)
如果文件存在:在写入之前,删除文件内容,将指针返回到文件开头。如果文件不存在,则尝试创建。
如果不存在:则创建文件

2.3. 如果fopen()函数调用失败,函数将返回false。可以用一种对用户友好的方式来处理这个错误。可以通过抑制PHP的错误信息并且根据自己的方式鬼畜错误信息、

//返回的是资源类型resource 。我们一般称之为资源句柄
@$fp = fopen(‘file.txt’,’ab’);//ab追加并且是二进制方式

2.4. 当打开一个文件的时候习惯性的将他关闭掉
fclose($fp);

2.5. 写入数据 fwrite() 或者fputs()
当打开一个文件后需要项文件写东西

fwrite($fp,$string,limit-length);

2.6. 获取字符串的长度。
strlen($_string;)

2.7. 创建或者覆盖一个文件
//就只有一句话,不需要任何其他灵活的事情的使用。
//不需要资源句柄,不需要设置长度。
file_put_contents(‘file2.txt’,’1111′);
相当于依次执行了函数、;fopen(‘1.txt’.’w’) fwrite($fp,’11’) fclose($fp)

2.8. \r\n 可以让文本换行。

3. 读取文件

3.1
r: 只读

$fp = fopen(‘log.txt’,’r’)//
echo fgetc($fp);
fclose($fp);

3.2 都需要传递一个资源句柄
echo fgetc($fp): 读出一个字符,并将指针移动到下一个字符

echo fgets($fp): 读出一行
echo fgets($fp,$length); 读取一行并返回长度最多为length-1的字节的字符串

echo fgetss(); 去掉HTML标签//过滤HTML标签

echo fread($fp,$length): 必须两个参数。 读取最多length个字节的字符串

//本身包含了想浏览器输出的功能。所以不需要echo。返回剩余字符串的总长度
int = fpassthru($fp); //输出指针处剩余的所有的字符。

4. 不需要资源句柄
4.1
//file按照每行分组来存放在一个单元中
$arr = file($path) 将整个文件读入一个数组中。返回一个数组
echo $arr[1]; 第二行
4.2
//将整个文件读出来。不需要输出,本身能够输出浏览器。
readfile(‘1.txt’): 读入一个文件并写入到输出缓冲区。返回一个init类型
返回从文件中读入字节的总长度。

4.3
string file_get_contents($filepath)

//file_get_contents可以读入数据到缓冲区,然后通过echo 打印。
echo file_get_contents(’1.txt’);

5. 判断读完文件的函数: feof($fp); 通过指针来判断。需要配合资源句柄使用。
feof()检测文件指针是否到了文件结束的位置。
如果文件指针到了EOF或者出错时则返回TRUE。否则返回一个false

$fp = fopen(‘log.txt’,’r’);
// 用fgetc方法将所有的数据打印出来
while(!feof($fp)) {
echo fgetc($fp);
}

fclose($fp);

四:

1. 查看文件是否存在 file_exists();

//比如读取一个文件的时候,你必须保证这个文件一定要存在。才可以操作。否则就报错。

file_exists(‘1.txt’): 检查文件或者目录是否存在。 存在则返回true,否则返回false

2. 查看一个文件的大小:
filesize(‘1.txt’);单位字节Byte

3. 删除一个文件
unlink(‘file.txt’); 成功返回 true 错误返回false

4. 文件中的定位
bool rewind(资源句柄): 可以将文件指针复位到文件的开始。

int ftell(资源句柄): 可以以字节为单位报告文件指针当前在文件中的位置。

bool fseek(resource handle,int offset):可以将文件指针fp从whence位置移动offset字节。成功返回true

五:文件锁定

bool flock($fp,操作值)

操作值
LOCK_SH 以前为1 读写锁定。文件可以共享其他人可以读写该文件
LOCK_EX 以前为2 写操作锁定。这是互斥的。改文件不能被共享
LOCK_UN 以前为3 释放已有锁定
LOCK_NB 以前为4 防止在请求加锁时发生阻塞

//a表示可追加 b表示二进制 。这样可移植性好
$fp = fopen(‘1.txt’,’ab’);
flock($fp,LOCK_EX);//锁定
fwrite($fp,$outsum);
flock($fp,LOCK_UN); //释放
fclose($fp);

六: 目录(文件)句柄操作。

1. resource opendir(string path):打开路径指定的目录流
打开一个目录的句柄,可以用之后的closedir() readdir() 和 rewinddir()中电泳

2. closedir():关闭目录流

3. string readdir(resource dir_handle):返回目录中的各个元素
返回当前指针的目录名,然后指针下移。目录中下一个文件的文件名。文件名以在文件系统中的排序返回。

// 目录操作
$path = ‘D:/xampp/’;
$dir = opendir($path);

//读出目录 使用循环
// echo readdir($dir);

while ( !! $file = readdir($dir)) {
echo $file . ‘<br>’;
}

//关闭
closedir($dir);

4. scandir($path):将目录读入数组 。不需要资源句柄,直接写目录路径

$path = ‘D:/wxampp’;
print_r(scandir($path));

5. rmdir():删除指定的目录
rmdir($path);

6. rename() 重命名文件和目录
rename(‘Demo1.php’,’Demo01.php’);

 

本文来自投稿,不代表微擎百科立场,如若转载,请注明出处:https://www.w7.wiki/develop/2348.html

发表评论

登录后才能评论