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文件系统处理的更多相关文章

  1. Linux学习笔记(一) 文件系统

    对于每一个 Linux 学习者来说,了解 Linux 文件系统的结构是十分有必要的 因为在 Linux 中一切皆文件,可以说只有深入了解 Linux 的文件系统,才会对 Linux 有更深刻的理解 L ...

  2. linux源代码阅读笔记 linux文件系统(二)

    上一篇文章说到linux文件系统中分为超级块,inode块,block块.inode块给出文件的权限,修改时间,大小等信息. 但是实际上,文件的数据是存储在block块中的.而inode块中给出了存储 ...

  3. linux源代码阅读笔记 linux文件系统(转)

    linux文件系统:   操作系统的文件数据除了文件实际内容外,还有非常多的属性,如文件权限(rwx)与文件属性(所有者.群组.时间参数等).   文件系统通常将这两部分数据存放在不同的块.权限属性放 ...

  4. [读书笔记]Linux命令行与shell编程读书笔记03 文件系统等

    1. 文件系统的种类 ext ext2 ext3 ext4 JFS XFS 其中ext3 开始支持journal日志模式 与raid卡类似 有 数据模式  排序模式 以及回写模式 数据模式最安全 回写 ...

  5. 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 ...

  6. linux源代码阅读笔记 linux文件系统(三)

    当系统申请一个新的inode时.系统并不会对磁盘进行读写.它会在存储在内存的inode表(inode_table)中寻找一个空闲的位置. 如果找到了,直接返回该inode.否则要等待一个空闲的位置. ...

  7. Linux内核设计与实现之虚拟文件系统的读书笔记

    Linux内核设计与实现之虚拟文件系统的读书笔记 虚拟文件系统(VFS) 为用户空间提供了文件和文件系统相关的接口. 文件系统抽象层 内核在底层文件系统上建立了一个抽象层, 该抽象层使Linux能够支 ...

  8. Linux学习笔记(二) 文件管理

    了解 Linux 系统基本的文件管理命令可以帮助我们更好的使用 Linux 系统,以下介绍几个常用的文件管理命令 1.pwd pwd 是 Print Working Directory 的简写,用于显 ...

  9. Liunx学习笔记(三) 文件权限

    一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- ...

随机推荐

  1. magento cache,magento index

    "Magento后台作修改,Magento前台没变化""Magento属性更新了,Magento前台没反应"如果你碰到了以上两种情况,或者看到截图中的提示: 您 ...

  2. [LeetCode]题解(python):059-Spiral Matrix II

    题目来源 https://leetcode.com/problems/spiral-matrix-ii/ Given an integer n, generate a square matrix fi ...

  3. imx6 otg host support

    本文记录添加imx6 otg host支持的过程. 参考链接 http://www.cnblogs.com/helloworldtoyou/p/6108560.html https://communi ...

  4. 人脸pts文件检查及人脸框输出

    function output() outtxt = fopen('D:\AR database\kz.txt','wt'); : imgpath= strcat('D:\AR database\kz ...

  5. Python迁移MySQL数据到MongoDB脚本

    MongoDB是一个文档数据库,在存储小文件方面存在天然优势.随着业务求的变化,需要将线上MySQL数据库中的行记录,导入到MongoDB中文档记录. 一.场景:线上MySQL数据库某表迁移到Mong ...

  6. uwsgi + nigix + django的样式展示

    编辑添加黄色部分  是你的项目目录  在你的项目目录写的静态文件 内的样式调用的是static 如果不是 请改名 [root@ayibang-server s10day11]# vim /etc/ng ...

  7. 第六篇 SQL Server安全执行上下文和代码签名

    本篇文章是SQL Server安全系列的第六篇,详细内容请参考原文. SQL Server决定主体是否有必要的执行代码权限的根本途径是其执行上下文规则.这一切都可能复杂一个主体有执行代码的权限,但是却 ...

  8. [算法]A General Polygon Clipping Library

    A General Polygon Clipping Library Version 2.32    http://www.cs.man.ac.uk/~toby/alan/software/gpc.h ...

  9. OC数组中文排序

    -(void)sortStudentInfo { if(studentInfoArray && studentInfoArray.count > 0) { for(TWDetai ...

  10. Python:使用psycopg2模块操作PostgreSQL

    安装psycopg2模块: 怎么验证是否已经安装过psycopy2? 编写上面代码,运行看是否抛出缺少psycopg2模块. 安装方法1: 1)使用psycopg2-2.4.2.win-amd64-p ...