[笔记]PHP文件系统处理
PHP文件系统处理
***所有的文件处理都是使用系统函数完成的.
***php文件处理 是 基于linux/unix系统为模型的, 在linux下完全没问题
在windows下有一些 有差别.
#### 文件读写操作,与C语言等 处理方式相同.
文件处理的作用:
1.所有的项目,都离不开文件处理.
2.把数据长时间保持,需要文件
3.建立网站缓存 / 服务器中的文件操作
文件处理:
1.用系统的函数获取 文件的类型, 等等
#### 文件的 类型
#### 文件系统类型
以linux/unix委模型的,
在windows中只能获取file,dir或unknown类型(三种)
在linux下 block,char, dir, fifo, file, link, unknown(七种)
block : 块设备文件, 某个磁盘分区, 软驱,光驱,等
char : 字符设备, 输出过程I/O中以字符为单位传输的设备,键盘,打印机等
*dir : 目录也是文件的一种, linux中通常文件,类型不同,
*fifo: 命令管道,信息从一个进程传入另一个进程
file:
link: 链接文件, (快捷方式) ln -s
filetype("目录或文件名")
is_file -- 判断给定文件名是否为一个正常的文件
is_dir -- 判断给定文件名是否是一个目录
is_executable -- 判断给定文件名是否可执行
is_link -- 判断给定文件名是否为一个符号连接
is_readable -- 判断给定文件名是否可读
is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的
is_writable -- 判断给定的文件名是否可写
is_writeable -- is_writable() 的别名
2.文件的属性 获取
file_exists -- 检查文件或目录是否存在
filesize -- 取得文件大小
is_readable -- 判断给定文件名是否可读
is_writable -- 判断给定的文件名是否可写
fileatime -- 取得文件的上次访问时间
filemtime -- 取得文件修改时间
filectime -- 取得文件的 inode 修改时间
fileactime() -- 访问.修改时间
state -- 查看文件状态
3.获取文件位置*(目录相关的函数)
4.文件操作 ( 创建 删除 移动)
5.文件的打开 关闭 (读文件内容, 向文件写内容)
6.文件内部 移动指针(读取文件中指定位置的数据, 只读取中间几个字符...)
7. 文件锁定机制
能用鼠标完成的,都能用程序完成(**操作对象在远程主机上*)
目录处理
1.目录的遍历
2.目录的创建 删除
3.目录的复制
对文件来说有系统函数, ***目录没有
5.统计目录大小
文件上传和下载
1.上传
2.下载
/*
和文件路径相关的函数::
相对路径
是以当前目录为准的(相对于当前目录的 上级和下级目录)
. 代表当前目录
.. 代表上一级目录
./php/apache/index.php
php/apache/index.php
login.php
./login.php
../images/tpl/logo.gif
****** 路径分隔符号: *****
linux/unix /
windows \
** (php手册)常量 DIRECTORY_SEPARATOR (string) - 为不同平台,提供目录分隔符
windows \
linux /
<b>不管是什么操作系统, php的目录分隔符号 都支持 / (正斜杠)</b>
在php和apache配置文件中, 如果需要指定目录, 也使用 / 作为目录分隔符
***************************
绝对路径
是从根开始的
/ - 根路径
/images/index.php -
? 指的是 操作系统的根
? 还是 存放网站的文档根目录
** 分情况 **
如果是在服务器中执行(通过php文件处理函数执行)路径, 根指的就是os的根.
如果程序(html,css,js)是下载到客户端, 在访问服务器中的文件时,只有通过apache访问,根 也就指的是文档根目录.
basename(url) - 获取文件名
dirname(url) - 获取目录
pathinfo() - 路径信息
*/
/*
* 文件的操作
创建文件
touch
删除 文件
unlink
移动 文件(也用于重命名)
rename(当前文件路径, 目标文件路径)
复制 文件
copy(当前, 目标)
重命名 文件
rename()
所有 对文件的操作 一定要有PHP执行这个文件的权限, apache, 启动apache的用户 具有权限.
(windows - 比较危险, 一般apache都是管理员运行
linux - 一般文件/目录 只读, 少数可读写)
chgrp -- 改变文件所属的组
chmod -- 改变文件模式
chown -- 改变文件的所有者
ls -s / ll
_rwxrwxrwx => 777
_ 类型 _文件 d - 目录 l-link b-clock
1.rwx - 这个文件拥有者具有读写执行权限
2.rwx - 拥有者所在的组
3.rwx - 其他用户对这个文件的权限
r 4
w 2
x 1
7 7 7 => 4+2+1 4+2+1 4+2+1
6 4 4
7 5 5
chmod 777 demo.php - 可读可写可执行
chmod u=rwx, g=rwx, o=r
chmod 644 demo.html - 可读写只读只读
chown MySQL "demo.php"
chgrp apache "demo.php"
filegroup -- 取得文件的组
fileowner -- 取得文件的所有者
****
本节主要介绍
PHP文件的常规 读和写 的操作
详细介绍了
file_get_contents()
file_put_contents()
以及
file()
readfile()
的应用
通过改写配置文件和提取sql语句的示例 演示几个读取文件的操作.
****文件读写
读取文件
file_get_contents()_php5+_简单读写推荐
file()
readfile()
******以上都是全部读取*****不足: 不能读取部分,也不能指定的区域*****
fopen()-打开文件
fread()-读取多少个字符
fgetc()-读单个字符
fgets()-读单行字符
写入文件
file_put_contents()_php5+_简单读写推荐 (
如果文件不存在,创建并写入;
如果文件存在, 删除原内容,写入新的)
(以上是覆盖模式的写法)
// 不足: 不能用追加的方式写; 也不能加锁.
fopen()
fwrite() - fputs()
本地文件: 可以使用 相对路径和绝对路径
./test.txt
远程文件:
http://www.baidu.com
http://www.163.com
(远程文件一般没有写权限)
fclose -- 关闭一个已打开的文件指针
****
****
****
*/
// echo file_put_contents("./abc.txt",'asddfa');
/*$str=file_get_contents('./abc.txt');
echo $str;
*/
// echo file_put_contents("test1.txt", "***");//返回写入的字符数
/*读取网站网页内容 _ 分析出 网页中的图像标记 */
/*$str=file_get_contents("http://www.zol.com.cn");
// echo $str;
preg_match_all('/\<img\s*src=.*?\s*\/?\>/i', $str,$images);
echo "<pre>";
print_r($images);
echo "</pre>";
*/
// 演示- 示例
//表单提交 - 演示用提交内容改写配置文件
// if(isset($_POST["sub"])){
/* echo "<pre>";
print_r($_POST);
echo "</pre>";*/
// setConfig($_POST);
// }
// 单开一个函数,把修改写入配置文件
/*function setConfig($post){ // 三步
$configFile="config.inc.php";
// 读出配置文件内容
$str=file_get_contents($configFile);
// 修改内容
$pattern=array();
$rep=array();
foreach ($post as $key => $value) {
$pattern[]="/define\(\"{$key}\"\s*.*?\);/i";
$rep[]="define(\"{$key}\",\"{$value}\");";
}
*/
/*
echo "<pre>";
print_r($pattern);
print_r($rep);*/
/*
$str=preg_replace($pattern, $rep, $str);
// 写入配置文件
file_put_contents($configFile, $str);
}
*/
// 演示readfile()
// readfile("abc.txt");// 读出 并 直接输出/**/
//直接输出不能自己处理啦
/*readfile(){
echo $string;
}
// 上面的一条语句相当于下面
file_get_contents("abc.txt"){
return $string;
}*/
/*
$arr=file("abc.txt");// 一行是数组中一个元素,
// 数组尺寸是文件
echo "<pre>";
print_r($arr);
*/
/*
// file()- 经常用
读出来 是一个数组,
[案例]把sql文件中的sql语句都提取出来,
注释/空行 都过滤
*/
// 读取 所有行
$lines=file("imooc.sql");
$sqlstr="";//合并到sql字符串
foreach ($lines as $line) {
$line=trim($line);// 去掉两端的空格
// 过滤空行
if ($line!="") {
if (!($line{0}=="#" || $line{0}.$line{1}=="--")) {
$sqlstr.=$line;
}
}
}
// 分割(按分号;)
$asql_arr=explode(";", $sqlstr);
// echo $sqlstr;
echo "<pre>";
print_r($asql_arr); // 一共175行
<!-- 表单界面 -->
<!-- <form action="file_rw.php" method="post">
host: <input type="text" name="DB_HOST"><br>
user: <input type="text" name="DB_USER"><br>
pass: <input type="text" name="DB_PWD"><br>
dbname: <input type="text" name="DB_NAME"><br>
tabPREFIX: <input type="text" name="DB_PREFIX"><br>
<input type="submit" name="sub" value="mod"><br>
</form> -->
[笔记]PHP文件系统处理的更多相关文章
- Linux学习笔记(一) 文件系统
对于每一个 Linux 学习者来说,了解 Linux 文件系统的结构是十分有必要的 因为在 Linux 中一切皆文件,可以说只有深入了解 Linux 的文件系统,才会对 Linux 有更深刻的理解 L ...
- linux源代码阅读笔记 linux文件系统(二)
上一篇文章说到linux文件系统中分为超级块,inode块,block块.inode块给出文件的权限,修改时间,大小等信息. 但是实际上,文件的数据是存储在block块中的.而inode块中给出了存储 ...
- linux源代码阅读笔记 linux文件系统(转)
linux文件系统: 操作系统的文件数据除了文件实际内容外,还有非常多的属性,如文件权限(rwx)与文件属性(所有者.群组.时间参数等). 文件系统通常将这两部分数据存放在不同的块.权限属性放 ...
- [读书笔记]Linux命令行与shell编程读书笔记03 文件系统等
1. 文件系统的种类 ext ext2 ext3 ext4 JFS XFS 其中ext3 开始支持journal日志模式 与raid卡类似 有 数据模式 排序模式 以及回写模式 数据模式最安全 回写 ...
- NodeJS学习笔记 (2)文件系统操作-fs(ok)
原文:https://github.com/chyingp/nodejs-learning-guide/blob/master/%E6%A8%A1%E5%9D%97/fs.md#%E9%80%9A%E ...
- linux源代码阅读笔记 linux文件系统(三)
当系统申请一个新的inode时.系统并不会对磁盘进行读写.它会在存储在内存的inode表(inode_table)中寻找一个空闲的位置. 如果找到了,直接返回该inode.否则要等待一个空闲的位置. ...
- Linux内核设计与实现之虚拟文件系统的读书笔记
Linux内核设计与实现之虚拟文件系统的读书笔记 虚拟文件系统(VFS) 为用户空间提供了文件和文件系统相关的接口. 文件系统抽象层 内核在底层文件系统上建立了一个抽象层, 该抽象层使Linux能够支 ...
- Linux学习笔记(二) 文件管理
了解 Linux 系统基本的文件管理命令可以帮助我们更好的使用 Linux 系统,以下介绍几个常用的文件管理命令 1.pwd pwd 是 Print Working Directory 的简写,用于显 ...
- Liunx学习笔记(三) 文件权限
一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- ...
随机推荐
- 自己用的一个ASP.Net MVC分页拿出来分享下(转)
实例懒得做.切几个图把代码发上要用的自己搞啦~ 下面是一个helper类. namespace System.Web.Mvc { public enum BarStyle { yahoo, digg, ...
- LightOj 1098 - A New Function(求1-n所有数的因子和)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1098 题意:给你一个数n (0 ≤ n ≤ 2 * 109),求n以内所有数的因子和, ...
- PySe-002-Py-简单示例及编码设定
非常简单而又国际化的例子 Hello World!在控制台依次输入命令:python, print "This is first program %s" % "Hello ...
- Windows-008-VirtualBox 安装 Win7 前沿配置详解
此文主要讲述在 Windows 系统下安装虚拟机 VirtualBox,及用 VirtualBox 安装 Win7 Professional 64bit 操作系统的前沿配置为例,配以图文进行详细的讲解 ...
- Android RecycleView + CardView 控件简析
今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...
- EF Code First教程-03 数据库迁移Migrator
要在nuget 程序包管理控制台中输入命令 基本命令 Enable-Migrations //打开数据库迁移 Add-Migration AddBlogUrl //新增一个数据库迁移版本 ...
- MySQL之数据类型与操作数据表
上节回顾 一.数据类型 什么是数据类型? 数据类型是指列.存储过程参数.表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型. 所谓数据类型,最直接的理解就是我们有些是存储数字的, ...
- msvc库没有安装包,编译选项选择 代码生成 MT【多线程】,C#调用
参考提过的一个问题,封装VC++动态链接库,C#调用,并将C#程序打包为exe安装包. 感谢大神.
- bootstrap实战经验
凡是基本的布局需要float实现的,都可以考虑利用网格布局. 1,.jumbotron可以形成一个青灰色的背景,并自动调节对应边距 2,.panel的应用十分广泛,可以自动设置合适的padding.甚 ...
- contenteditable
http://www.w3school.com.cn/tags/att_global_contenteditable.asp 做编辑器经常用这个属性 使得整个编辑区域所见所得 http://www.c ...