PHP--学习笔记---06文件系统处理

1.unix的文件类型

在这里插入图片描述

2.文件的属性

在这里插入图片描述

3.stat()获取文件的大部分属性值

stat()的返回值是一个数组

<?php
//返回关于文件的信息数组,是关联和索引混合的数组
$filepro=stat("file.txt");
foreach ($filepro as $key => $value) {
	echo $key."->".$value."<br/>";
}

结果:
0->3531323606
1->1970324837074954
2->33206
3->1
4->0
5->0
6->0
7->86
8->1586873610
9->1586873610
10->1586873570
11->-1
12->-1
dev->3531323606
ino->1970324837074954
mode->33206
nlink->1
uid->0
gid->0
rdev->0
size->86
atime->1586873610
mtime->1586873610
ctime->1586873570
blksize->-1
blocks->-1

4.basename()返回路径中的文件名部分

string basename(“路径字符串”)

<?php
//返回关于文件的信息数组,是关联和索引混合的数组
$filepath="D:\WebServer\MyWebSiteForPHP\site2\index.php";
echo basename($filepath);
echo "<br/>";
echo basename($filepath,".php");//缺省后缀名
?>

结果:
index.php
index

5.dirname()返回路径中的目录名部分

只有一个参数,给出一个包含有指向一个文件的全路径的支付穿,返回去掉文件名后的目录名:

<?php
//返回关于文件的信息数组,是关联和索引混合的数组
$filepath="D:\WebServer\MyWebSiteForPHP\site2\index.php";
echo dirname($filepath);
echo "<br/>";
echo basename("d:\\");
?>

结果是:
D:\WebServer\MyWebSiteForPHP\site2
d

6.pathinfo()返回路径中的各个部分部分

参数是一个字符串文件路径,返回一个包含dirname,basename和extension作为键名的关联数组

<?php
//返回关于文件的信息数组,是关联和索引混合的数组
$filepath="D:\WebServer\MyWebSiteForPHP\site2\index.php";
$filearray= pathinfo($filepath);
foreach ($filearray as $key => $value) {
	echo $key."->".$value."<br/>";
}
?>

结果:
dirname->D:\WebServer\MyWebSiteForPHP\site2
basename->index.php
extension->php
filename->index

7.遍历目录

在这里插入图片描述
opendir():打开指定目录
readdir():读取指定目录
closedir():关闭指定目录
rewinddir():倒回目录句柄

8.统计目录大小filesize(),disk_free
9.建立和删除目录

mkdir():创建目录
rmdir():删除目录
unlink():将目录中的每个文件都删除

10.复制目录

copy():复制文件
copydir():

11.文件的打开与关闭fopen(),fclose()

格式是:
resource fopent(文件名,读取模式)
在这里插入图片描述

<?php
//返回关于文件的信息数组,是关联和索引混合的数组
$filepath="D:\WebServer\MyWebSiteForPHP\site2\index.php";
$handle=fopen($filepath, "r");
?>

fclose():类似于java的关闭流

12.写入文件fwrite()

写入字符序列\n表示换行符,windows使用\r\n作为行结束符,max系统使用\r作为结束自负。
原型格式如下
int fwrite(resource handle,String string, intlengt);

<?php
//声明变量用来保存文件名
$filepath="file.txt";
$handle=fopen($filepath, "w") or die("打开<b>".$filepath."</b>失败!");
//循环10次写入10行数据到文件中
for ($i=0; $i <10 ; $i++) { 
	fwrite($handle, $i."中华人民共和国从此站起来了\n");
}
fclose($handle);
?>

结果:
在这里插入图片描述

一次性写入数据

<?php
//声明变量用来保存文件名
$filepath="file.txt";
$data="";
for ($i=0; $i <10 ; $i++) { 
	$data.=$i."外国人民也没趴下呀!\n";
}
file_put_contents($filepath, $data);
?>

结果是:
在这里插入图片描述

13.读取文件内容

读取文件的标准函数
在这里插入图片描述
使用feof()函数。判断一个文件指针是否到了文件末尾,到了则返回true

14.读取文件内容-fread()

读取指定文件的指定长度的字符串,格式如下
String fread(int handle,int lenght)
这里handle要从fopen中获得一个handle的返回值

<?php
//从文件中读取指定字节数的内容到变量
$filename="D:\WebServer\MyWebSiteForPHP\site2\\file.txt";
$handler=fopen($filename, "r") or die("打开文件失败");
$strings=fread($handler, 100);
fclose($handler);
echo $strings;
echo "<br/><br/>";

//从文件中读取全部内容到变量中,每读取一部分,循环读取
$filename="D:\WebServer\MyWebSiteForPHP\site2\\file.txt";
$handler=fopen($filename, "rb") or die("打开文件失败");
$contents="";
while (!feof($handler)) {
	$contents.=fread($handler,1024);
}
fclose($handler);
echo $contents;
echo "<br/><br/>";

//从文件中读取全部信息
$filename="D:\WebServer\MyWebSiteForPHP\site2\\file.txt";
$handler=fopen($filename, "rb") or die("打开文件失败");
$contents=fread($handler,filesize($filename));
fclose($handler);
echo $contents;
echo "<br/><br/>"

?>

结果:
做这个项目的初衷是因为我去年在微信卖老家水果,好多朋友下单后都问�

做这个项目的初衷是因为我去年在微信卖老家水果,好多朋友下单后都问我快递单号。 每天发货后我都要挨个甄别这个人是哪个快递信息,很麻烦一部小心就搞错了。 基于这件小事我有了自助快递查询的这个想法。

做这个项目的初衷是因为我去年在微信卖老家水果,好多朋友下单后都问我快递单号。 每天发货后我都要挨个甄别这个人是哪个快递信息,很麻烦一部小心就搞错了。 基于这件小事我有了自助快递查询的这个想法。

15.fgets(),fgetc()

fgets()
格式:
string fgets(int handle,可选长度)
函数一次至多从打开的文件资源中读取一行内容,第一个参数是handle,第二个可选参数length返回length-1个字节,或者遇到换行或者eof之前读取的所有内容。缺省默认1024字节。
fgets()
同上,但在打开的文件资源中值读取当前指针位置处的一个字符,如果遇到eof,将返回false值

<?php
//从文件中读取指定字节数的内容到变量
$filename="D:\WebServer\MyWebSiteForPHP\site2\\file.txt";
$handler=fopen($filename, "r") or die("打开文件失败");

while (!feof($handler)) {//循环读取第一行
	$buffer=fgets($handler,4096);//一次读取一行
	echo $buffer."<br/>";
}
fclose($handler);

//从文件中读取指定字节数的内容到变量
$filename="D:\WebServer\MyWebSiteForPHP\site2\\file.txt";
$handler=fopen($filename, "r") or die("打开文件失败");

while (false !=($char=fgetc($handler))) {//循环读取一个字符
	echo $char."<br/>";
}
fclose($handler);

?>

结果:
hello world做这个项目的初衷是因为我去年在微信卖老家水果,好多朋友下单后都问我快递单号。
每天发货后我都要挨个甄别这个人是哪个快递信息,很麻烦一部小心就搞错了。

基于这件小事我有了自助快递查询的这个想法。




h
e
l
l
o

w
o
r
l
d


后续省略

16.file()

与file_get_contents()类似,直接读取整个文件,且不需要fopen文件
返回一个数组,每个元素对应文件中的响应的行,各个元素由换行符分割,且换行符附加在每个元素的末尾

<?php
//从文件中读取指定字节数的内容到变量
$filename="D:\WebServer\MyWebSiteForPHP\site2\\file.txt";
print_r(file($filename));

?>

结果:
Array ( [0] => hello world做这个项目的初衷是因为我去年在微信卖老家水果,好多朋友下单后都问我快递单号。 [1] => 每天发货后我都要挨个甄别这个人是哪个快递信息,很麻烦一部小心就搞错了。 [2] => [3] => 基于这件小事我有了自助快递查询的这个想法。 )

17.file()

读取整个文件,输出到缓冲区,并返回读取的字节数,不需要fopen文件,这个最高效

<?php
$filename="D:\WebServer\MyWebSiteForPHP\site2\\file.txt";
readfile($filename);
?>

结果:
hello world做这个项目的初衷是因为我去年在微信卖老家水果,好多朋友下单后都问我快递单号。 每天发货后我都要挨个甄别这个人是哪个快递信息,很麻烦一部小心就搞错了。 基于这件小事我有了自助快递查询的这个想法。

18.访问远程文件

与正常fopen访问没有差别,只是需要在服务器做相应权限设置

<?php
//这里是一个远程地址
$filename="http://www.36.cn/js/jquery/jquery-1.11.1.js";
$handler=fopen($filename, "r") or die("打开远程文件失败!");
while(!feof($handler)){
	$line=fgets($handler,1024);
	echo $line;
}

fclose($handler);
?>

结果
在这里插入图片描述

19.移动文件指针

指针的位置是以文件头开始的字节度量,文件指针通常在文件的开头伙食结尾处,可以通过ftell(),fseek(),rewind()三个函数对文件指针进行操作
格式:
int ftell(resource handle):返回文件指针的当前位置
int fseek(resource handle,int offset,可选的whence):移动文件指针到指定的位置
bool rewin(resource handle):移动文件指针到文件的开头
都需要使用一个fopen()来打开文件,从而获得文件指针,也可以获得一个handle。

fseek()成功则返回0,失败返回-1

<?php
$filename="D:\WebServer\MyWebSiteForPHP\site2\\file.txt";//远程文件也可以的
$handler=fopen($filename, "r") or die("打开远程文件失败!");
echo ftell($handler)."<br/>";//成功返回零
echo fread($handler,10)."<br/>";//读取前10个字符,指针也移到10的位置
echo ftell($handler)."<br/>";//显示出指针的位置

fseek($handler,100,SEEK_CUR);//向后移动100个字节
echo ftell($handler)."<br/>";
echo fread($handler,10)."<br/>";
fseek($handler,-10,SEEK_END);//往移动到倒数10个字符指针
echo fread($handler,10)."<br/>";
rewind($handler);//回到开头
echo ftell($handler)."<br/>";

fclose($handler);
?>

结果:
0
hello w
10
110
我快递�
想法。
0

20.文件的锁死(独占)机制flock()

格式:
book flock(int handle, int operation,可选的int $woldblock)
需要一个handle
operation的取值为:
LOCK_SH:取得共享锁(从文件中读取数据时使用)
LOCK_EX:取得独占锁定(向文件中写入数据时使用)
LOCK_UN:释放锁定(无论共享或独占锁,都用它释放)
LOCK_NB:附加锁定(锁定堵塞时,锁上加锁)
锁定成功返回true,失败返回false

21.文件的一些基本操作函数

在这里插入图片描述
具体内容略了

22.文件的上传和下载—php配置文件中与文件上传有关的选项

在这里插入图片描述

23.php的专门提供的判断上传的函数is_upload_file()和move_upload_file()函数

is_upload_file():判断文件是否通过psot上传,是则为true,不是为false
实现:略

<?php
//接受上传文件的用户名
$username=$_POST['username'];
$fileintroduce=$_POST['fileintro'];

echo $username."--".$fileintroduce."<br/>";
if (is_uploaded_file($_FILES['myfile']['tmp_name'])){
	//把文件存到
	$uploadfile=$_FILES['myfile']['tmp_name'];
	$movto=$_SERVER['DOCUMENT_ROOT'].'/EX02/up/'.$_FILES['myfile']['name'];//这里是name而不是temp_name;
	//echo $uploadfile."||".$movto;
	if(move_uploaded_file($uploadfile, $movto)){
		echo "上传成功";
	}else{
		echo "上传失败";
	}
}else{
	echo "上传失败";
}
?>
24.处理多个文件上传与文件下载

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值