PHP之文件处理

目录

1 目录操作

1.1 打开和关闭目录

1.2 创建和删除目录

1.3 判断文件类型

2 文件操作

2.1 打开文件

2.2 读取文件

2.3 写文件

2.4 文件的简易操作


1 目录操作

1.1 打开和关闭目录

resource opendir ( string $path [, resource $context ] )

1 path
要打开的目录路径

2 context
context 参数的说明见手册中的 Streams API 一章。

string readdir ([ resource $dir_handle ] ) 

返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。

void closedir ([ resource $dir_handle ] ) 

dir_handle
目录句柄的 resource,之前由 opendir() 所打开的。如果目录句柄没有指定,那么会假定为是opendir()所打开的最后一个句柄。

1.2 创建和删除目录

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context]]] ) 

1 pathname
目录的路径。

2 mode
默认的 mode 是 0777,意味着最大可能的访问权。有关 mode 的更多信息请阅读 chmod() 页面。

Note:

mode 在 Windows 下被忽略。

注意也许想用八进制数指定模式,也就是说该数应以零打头。模式也会被当前的 umask 修改,可以用 umask() 来改变。

3 recursive
Allows the creation of nested directories specified in the pathname.

4 context
Note: 在 PHP 5.0.0 中增加了对上下文(Context)的支持。有关上下文(Context)的说明参见 Streams。

bool rmdir ( string $dirname [, resource $context ] ) 

1 dirname
目录的路径。

2 context
Note: 在 PHP 5.0.0 中增加了对上下文(Context)的支持。有关上下文(Context)的说明参见 Streams。

1.3 判断文件类型

string filetype ( string $filename ) 

filename
文件的路径。

 


 

2 文件操作

2.1 打开文件

resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource$context ]] ) 

filename
如果 filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。

如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了安全模式或者 open_basedir 则会应用进一步的限制。

如果 PHP 认为 filename 指定的是一个已注册的协议,而该协议被注册为一个网络 URL,PHP 将检查并确认 allow_url_fopen 已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。

fopen() 中 常见的mode 的可能值列表
mode说明
'r'只读方式打开,将文件指针指向文件头。
'r+'读写方式打开,将文件指针指向文件头。
'w'写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+'读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a'写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+'读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x'创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
'x+'创建并以读写方式打开,其他的行为和 'x' 一样。

2.2 读取文件

string fgets ( resource $handle [, int $length ] ) 

从文件指针中读取一行。

1 handle
文件指针必须是有效的,必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

2 length
从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值

中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认

为 1K,或者说 1024 字节。

string fgetc ( resource $handle ) 

从文件句柄中获取一个字符。

handle
文件指针必须是有效的,必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

2.3 写文件

fwrite ( resource $handle , string $string [, int $length ] ) : int

handle

文件系统指针,是典型地由 fopen() 创建的 resource(资源)。

string

The string that is to be written.

length

如果指定了 length,当写入了 length 个字节或者写完了 string 以后,写入就会停止,视乎先碰到哪种情况。

注意如果给出了 length 参数,则 magic_quotes_runtime 配置选项将被忽略,而 string 中的斜线将不会被抽去。

 

2.4 文件的简易操作

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

1 source
源文件路径。

2 dest
目标路径。如果 dest 是一个 URL,则如果封装协议不支持覆盖已有的文件时拷贝操作会失败。

3 Warning
如果目标文件已存在,将会被覆盖。

4 context
A valid context resource created with stream_context_create().

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

1 oldname

用于 oldname 中的封装协议必须和用于 newname 中的相匹配。

2 newname
新的名字。

3 context
Note: 在 PHP 5.0.0 中增加了对上下文(Context)的支持。有关上下文(Context)的说明参见 Streams。

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

1 filename
文件的路径。

2 context
Note: 在 PHP 5.0.0 中增加了对上下文(Context)的支持。有关上下文(Context)的说明参见 Streams。


注:常见的目录及文件操作

目录操作:

  1. 打开目录 opendir()
  2. 读取目录 readdir()
  3. 列出指定路径中的文件和目录  scandir()
  4. 创建目录 mkdir()
  5. 删除目录 rmdir()
  6. 关闭目录句柄  closedir()
  7. 返回路径中的目录部分  dirname() 
  8. 取得当前工作目录  getcwd()
  9. 判断是否是目录 is_dir()

 文件操作:

  1. 打开文件 fopen()
  2. 读取文件 fgets()  ;  注:file_get_contents()也是读取文件
  3. 写入文件fwrite()  ;  注:file_put_contents()同样可以写入文件
  4. 关闭文件句柄 fclose()
  5. 移动 / 重命名文件 rename()
  6. 复制文件 copy()
  7. 创建文件 vim  或 touch
  8. 删除文件 unlink() 
  9. 获取文件上次访问的时间 fileatime()
  10. 获取文件上次修改的时间 filemtime()
  11. 获取文件大小 filesize()
  12. 获取文件类型  filetype()
  13. 获取文件详细信息 stat()
  14. 判断是否是文件 is_file()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP中,可以通过处理JavaScript上传的文件。以下是一个简单的实例,展示了如何使用PHP处理通过JavaScript上传的文件。 首先,需要在HTML中创建一个上传文件的表单。可以使用input[type=file]元素来实现文件上传功能。 ```html <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form> ``` 然后,在PHP的upload.php文件中,可以使用$_FILES全局变量来处理上传的文件。这个变量包含了上传文件的各种信息,比如文件名、文件类型、临时文件路径等。 ```php <?php if(isset($_FILES['file'])){ $file = $_FILES['file']; // 获取文件名 $filename = $file['name']; // 获取文件类型 $filetype = $file['type']; // 获取文件大小 $filesize = $file['size']; // 获取文件临时路径 $tempFilePath = $file['tmp_name']; // 将文件移动到服务器指定位置 $targetFilePath = 'uploads/' . $filename; move_uploaded_file($tempFilePath, $targetFilePath); echo '文件上传成功!'; } ?> ``` 以上代码会将上传的文件移动到服务器上的指定位置,并输出"文件上传成功!"。可以根据实际需求进行进一步的处理,例如校验文件类型、限制文件大小等。 需要注意的是,在处理文件上传时,确保服务器上的目标文件夹具有写入权限。并且要谨慎处理用户上传的文件,避免潜在的安全风险,比如使用恶意文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值