文件读取/写入操作

fopen()函数

用来打开一个文件,打开时需要指定打开模式

打开模式

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

写入函数

  • fwrite()

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

  • fputs() : fwrite的别名

读取函数

  • fread() : 读取文件(可安全用于二进制文件)

string fread ( resource $handle , int $length )

  • fgets() : 从文件指针中读取一行

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

  • fgetc() : 从文件指针中读取一个字符

string fgetc ( resource $handle )

关闭文件函数

  • fclose()

不需要fopen()打开的函数

  • file_get_contents() : 将整个文件读入一个字符串

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

  • file_put_contents() : 将一个字符串写入文件 , 和依次调用 fopen(),fwrite() 以及 fclose() 功能一样。

int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

其他读取函数

  • file() : 把整个文件读入一个数组中

array file ( string $filename [, int $flags = 0 [, resource $context ]] )

  • readfile() : 读取文件并写入到输出缓冲。

int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

访问远程文件

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

目录操作函数

名称相关

  • basename() : 返回路径中的文件名部分

string basename ( string $path [, string $suffix ] )

<?php
echo "1) ".basename("/etc/sudoers.d", ".d").PHP_EOL;
echo "2) ".basename("/etc/passwd").PHP_EOL;
echo "3) ".basename("/etc/").PHP_EOL;
echo "4) ".basename(".").PHP_EOL;
echo "5) ".basename("/");
?>

输出:

1) sudoers
2) passwd
3) etc
4) .
5)
  • dirname() : 返回路径中的目录部分

string dirname ( string $path )

<?php
echo "1) " . dirname("/etc/passwd") . PHP_EOL; // 1) /etc
echo "2) " . dirname("/etc/") . PHP_EOL; // 2) / (or \ on Windows)
echo "3) " . dirname("."); // 3) .
?>
  • pathinfo() : 返回一个关联数组包含有 path 的信息。返回关联数组还是字符串取决于 options。

mixed pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )

<?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() : 打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。

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

  • readdir() : 返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。

string readdir ([ resource $dir_handle ] )

  • closedir()
  • rewinddir() : 将 dir_handle 指定的目录流重置到目录的开头。

void rewinddir ( resource $dir_handle )

目录删除

  • rmdir() : 尝试删除 dirname 所指定的目录。 该目录必须是空的,而且要有相应的权限。 失败时会产生一个 E_WARNING 级别的错误。

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

目录创建

  • mkdir() : 尝试新建一个由 pathname 指定的目录。

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

文件大小

  • filesize()

目录大小

  • disk_free_space()
  • disk_total_space()

文件拷贝

  • copy()

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

删除文件

  • unlink() : 删除 filename。和 Unix C 的 unlink() 函数相似。 发生错误时会产生一个 E_WARNING 级别的错误。

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

文件类型

  • filetype() : 返回文件的类型。 可能的值有 fifo,char,dir,block,link,file 和 unknown。

重命名文件或目录

  • rename()

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

文件截取

  • ftruncate()

bool ftruncate ( resource $handle , int $size )

文件属性

  • file_exists()
  • is_readable()
  • is_writeable()
  • is_executable()
  • filectime() : 取得文件的 inode 修改时间。 (状态改变时间change time)
  • fileatime() : 取得文件的上次访问时间(access time)
  • filemtime() : 取得文件修改时间(modify time)

文件锁

  • flock()

文件指针

  • ftell() : 返回由 handle 指定的文件指针的位置,也就是文件流中的偏移量。

int ftell ( resource $handle )

  • fseek() : 在文件指针中定位

int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )

<?php

$fp = fopen('somefile.txt', 'r');

// 读取数据
$data = fgets($fp, 4096); // 将指针移动到文件开头
// 与rewind($fp);效果一样
fseek($fp, 0); ?>
  • rewind() : 将 handle 的文件位置指针设为文件流的开头。

示例

<?php
/**
* 遍历目录里面的文件
* 1 打开dir
* 2 排除掉. 和 ..的情况
* 3 如果是dir 则再对目录进行遍历,递归遍历
*/
function loopDir($dir)
{
$handle = opendir($dir);
while(false!==($file=readdir($handle))){//这里不能写成while($file=read($handle)),因为如果文件名为"0",也会被判断为false
if ($file == '.' || $file == '..') {
continue;
}
if (filetype($dir.'/'.$file)=='dir') {
loopDir($dir.'/'.$file);
} else {
p($dir.'/'.$file);
}
}
closedir($handle);
} loopDir('.');

PHP文件及目录考察点的更多相关文章

  1. [APUE]文件和目录(中)

    一.link.unlink.remove和rename 一个文件可以有多个目录项指向其i节点.使用link函数可以创建一个指向现存文件连接 #include <unistd.h> int ...

  2. [APUE]文件和目录(上)

    一.文件权限 1. 各种ID 我在读这一章时遇到了各种ID,根据名字完全不清楚什么意思,幸好看到了这篇文章,http://blog.csdn.net/ccjjnn19890720/article/de ...

  3. ls: 无法访问/usr/sbin/smartctl: 没有那个文件或目录

    环境:RHEL6.5 + Oracle 11.2.0.4 RAC 在安装RAC时,检查时缺少包 cvuqdisk-1.0.9-1,oracle提供脚本修复安装. 但在执行时报错: [root@orad ...

  4. 【Linux命令】文件和目录操作命令

    本文主要用于常用命令的备忘,具体用法可用man查看,或查询其他资料. cd:改变工作目录 ls:列出目录的内容 mkdir:创建一个目录 cat:连接并显示指定的一个和多个文件的有关信息 cp:将给出 ...

  5. linux下创建文件与目录时默认被赋予了什么样的权限?

    当我们创建一个新的文件或目录的时候,他的默认权限是什么? umask--指定当前使用者在创建文件或目录的时候默认的权限值 [root@iZ288fgkcpkZ default]# umask [roo ...

  6. linux 查找文件或目录

    find / -maxdepth 2 -name "vmware*"在根目录/ 2层深度下搜索以vmware打头的文件或者目录

  7. java创建文件和目录

    java创建文件和目录 2013-09-04 12:56 99933人阅读 评论(7) 收藏 举报  分类: JAVA基础(10)  版权声明:本文为博主原创文章,未经博主允许不得转载. 创建文件和目 ...

  8. Linux文件与目录管理

    .      代表此层目录 . .     代表上一层目录 -      代表前一个工作目录 ~     代表"目前用户身份"所在的中文件夹 ~account   代表accoun ...

  9. IOS管理文件和目录

    1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...

随机推荐

  1. python操作dataFrame

    python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFrame数 ...

  2. mac系统下显示隐藏文件

    在终端上输入以下命令即可: 显示隐藏文件命令: defaults write com.apple.finder AppleShowAllFiles -bool true 不显示隐藏文件命令: defa ...

  3. 机器学习: KNN--python

    今天介绍机器学习中比较常见的一种分类算法,K-NN,NN 就是 Nearest Neighbors, 也就是最近邻的意思,这是一种有监督的分类算法,给定一个 test sample, 计算这个 tes ...

  4. AOP 基本术语及其在 Spring 中的实现

    无论是 Spring 还是其他支持 AOP(Aspect Oriented Programming)的框架,尤其是 Spring 这种基于 Java(彻底的面向对象)的语言,在实现 AOP 时,首先为 ...

  5. 洛谷 P1541 乌龟棋 —— DP

    题目:https://www.luogu.org/problemnew/show/P1541 DP. 代码如下: #include<iostream> #include<cstdio ...

  6. 【WebRTC音频预处理单元APM的整体编译及使用 - android】

    前言 在写[单独编译使用WebRTC的音频处理模块 - android]一文之前,就一直想直接把WebRTC的音频处理引擎VoE整个儿编译出来供自己的项目使用,但限于技术拙劣.时间紧迫,所以没能成功. ...

  7. json知识笔记

    1.全称:JavaScript  Object Notation 2.数据格式 3. 数据结构-object String+基本类型(或者数据结构) 数据结构-Array [基本类型] 4.一个样例a ...

  8. P4475 巧克力王国(KDTree)

    传送门 首先可以把约束条件看成一条直线,然后每个巧克力看成一个点,求给定区域内的点权和 用KDTree,每次判断一下当前矩形是否整个都在里面或都在外面,是的话直接返回,否则的话递归 注意,必须该矩形四 ...

  9. [App Store Connect帮助]七、在 App Store 上发行(5)手动发布版

    如果在您提交您的 App 以供审核时选择手动发布某个版本,您可以在它被批准且状态更改为“等待开发者发布”后发布该版本.如果您的某个 App 处于“等待开发者发布”状态超过 30 天,您会收到来自 Ap ...

  10. Keras 文档阅读笔记(不定期更新)

    目录 Keras 文档阅读笔记(不定期更新) 模型 Sequential 模型方法 Model 类(函数式 API) 方法 层 关于 Keras 网络层 核心层 卷积层 池化层 循环层 融合层 高级激 ...