PHP核心编程--目录操作(包含文件操作)
一.目录操作
1. 创建目录
创建目录mkdir(目录名称) //返回值为布尔

一次性创建主目录及其子目录

判断是不是一个目录is_dir //返回true,false

判断目录或文件是否存在file_exists //返回值为布尔


返回路径中的目录部分 dirname


2. 打开目录,
opendir — 打开目录句柄
opendir(目录路径) //返回的是一个目录句柄.

readdir(目标句柄) //读取目录中的条目,

目录名为零的处理

//目录名中文的处理 iconv(in_charset, out_charset, str) //说明: //将字符串由in_charset字符集 转为 out_charset字符集 //如: iconv(‘gbk’, ‘utf-8’, $str); //将$str由字符集gbk,转为utf-8;

3. 关闭目录
Closedir(目标句柄);//关闭目录,是为了释放内存资源.
有打开必须有关闭. Opendir,与closedir成对出现.


4. 目录重命名, 移动目录
rename(oldname, newname) //将oldname修改为newname; //返回值为布尔


5. 删除目录,
rmdir(目录名称) //返回值为布尔

二.文件操作
1. 打开文件
打开文件的方式fopen
fopen(文件路径,打开模式); //返回的文件句柄;


is_file 文件判断,返回布尔.

2. 关闭文件
fopen //返回的文件句柄
fclose(文件句柄); //释放内存资源
有打开就有关闭.
3. 写入文件
fwrite(文件句柄,字符串);

4. 读取文件内容:
1) 读取一个字符(字节)
fgetc(文件句柄)

对读取到0时的处理:

2) 读取一行字符
fgets

实例图片计时器
<?php
// 图片计数器 // 第一步:对计数器文本文件进行初始化,也就是创建计数器文件,并将0写入
$filename = './count.txt';
if (!file_exists($filename)) {
// 以写入的方法打开,返回文件句柄
$handle = fopen($filename,'w');
// 将0写入
fwrite($handle,0);
// 关闭句柄
fclose($handle);
}
// 第二步:按行 读取 计数器中的数字,同时将数字加1,将新数字写入到计数器文本中
$handle = fopen($filename,'r+');//以r+模式打开文件,由于在此模式下可读可写
$line = fgets($handle); //将计数器中的数字读取,788
$line++; //789
// 将加1后的新数字写入计数器
rewind($handle); //将指针复位
fwrite($handle,$line);//将789写入计数器
fclose($handle); // 第三步:按字符读取 将计数器中的数字,一个一个读取,同时将读取的数字和image目录中的图片名称进行匹配
$handle = fopen($filename,'r');
// 循环一个一个的读取计数器中的数字
while (false !== ($char = fgetc($handle))) {
echo "<img src=images/$char.jpg />";
}
fclose($handle);
?>

3) 读取指定大小的内容,
fread(文件句柄,长度); //说明,长度的单位是字节

feof(文件句柄) //文件的指针在文件的末尾

4) 不用打开和关闭
直接将文件读入字符串 file_get_contents
直接将字符串写入文件 file_put_contents

5. 拷贝文件



5) 删除一个目录中所有子目录及文件
Rmdir //只能删除空目录
Unlink//只能删除文件
删除整个文件夹(里面包含文件)的小例子:
<?php
// 删除一个目录中所有子目录和文件
// rmdir 只能删除文件目录
// unlink
// 定义函数 // $filename = './phpMyAdmin';
// $filename = './phpMyAdmin';
/*function delAll($path){
if (is_dir($path) ){
// 如果是目录则打开
$handle = opendir($path);
// 从目录句柄中循环读取
while (false !== ($file = readdir($handle))) {
// 注意此时的.,..必须跳过,否则将删除你当前文件所在磁盘中的所有文件!!!!!
if ($file=='.'||$file=='..') {
continue;
}
// 如果是目录则递归,如果不是目录则直接unlink
if (is_dir($path.'/'.$file) ){
delAll($path.'/'.$file);
}else{
unlink($path.'/'.$file);
} }
closedir($handle);
rmdir($path);
}
}
// 调用函数
delAll($filename)
?>
还有几个经典练习例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body> <!--
第2题:
题型:代码题
难度:3级
题干:
编写一段程序,递归显示某个指定目录中(如phpMyAdmin)所有子目录及文件。
-->
<?php
$filename = './phpMyAdmin';
function showfiles($path){
$handle = opendir($path);
echo "<ul>";
while (false !== ($file = readdir($handle))){
if ($file =="."|| $file == "..") {
continue;
}
if (is_dir($path.'/'.$file)) {
showfiles($path.'/'.$file);
}else {
echo "<li>$file</li>";
}
}
echo "</ul>";
closedir($handle);
}
showfiles($filename); // 第3题:
// 题型:代码题
// 难度:3级
// 题干:
// 编写一段程序,递归删除某个指定目录中(如phpMyAdmin)所有子目录及文件。
// 提示:在执行删除目录及文件时,一定要过虑掉“.”和“..”,避免删除上层目录中的目录及文件,十分危险。!!!!!!!
$filename = './mytest';
function delfiles($path) {
$handle = opendir($path);
while (false !== ($file = readdir($handle))) {
if ($file=='.'||$file=='..') {
continue;
}
if (is_dir($path.'/'.$file)) {
delfiles($path.'/'.$file);
}else {
// 删除文件
unlink($path.'/'.$file);
}
}
closedir($handle);
// 删除文件夹
rmdir($path);
} delfiles($filename); // 第4题:
// 题型:代码题
// 难度:3级
// 题干:
// 编写一段程序,用图片来实现访问量效果。当每次进入该页面,访问量加1,访问量值保存到记事本中。读取记事本中访问的数值,并将访问量的每一个数,用对应的图片显示出来。页面最后显示“你是第n位访问者”。
// 提示:参考答案中提供了0到9的数字图片。; $filename = './count.txt';
if (!file_exists($filename)) {
$handle = fopen($filename,'w');
fwrite($handle,0);
fclose($handle);
} $handle = fopen($filename,'r+');
$line = fgets($handle);
$line++;
rewind($handle);
fwrite($handle,$line);
fclose($handle); $handle = fopen($filename,'r');
echo "<span style='color:blue;font-size:30px;font-weight:700'>你是第</span>";
while (false !== ($file=fgetc($handle))) {
echo "<img src=images/$file.jpg />";
}
echo "<span style='color:blue;font-size:30px;font-weight:700'>位访问者!</span>";
fclose($handle); /*
第一题!!!递归应用
复制文件:并且从一个文件夹移动到另一个文件夹*/ $filename = './phpMyAdmin';
// $aimfilename ='./phpMyAdmin_copy';
// $aimfilename ='../student/a/b/c/phpMyAdmin_copy';
function read_copy($dirpath,$aim_path) {
$handle_dir = opendir($dirpath);
while (false !== ($file = readdir($handle_dir))) {
if ($file=='.'||$file=='..') {
continue;
}
if (is_dir($dirpath.'/'.$file)) { //如果是文件夹
if (file_exists($aim_path.'/'.$file)) { //有该文件夹的话
read_copy($dirpath.'/'.$file, $aim_path.'/'.$file);
} else { //没有该文件夹的话
mkdir($aim_path.'/'.$file,0777,true);
read_copy($dirpath.'/'.$file, $aim_path.'/'.$file);
} } else { //如果是文件
if (file_exists($aim_path)) {
copy($dirpath.'/'.$file, $aim_path.'/'.$file);
} else {
mkdir($aim_path,0777,true);
copy($dirpath.'/'.$file,$aim_path.'/'.$file);
} } }
closedir($handle_dir);
}
read_copy($filename,$aimfilename);
?> </body>
</html>
PHP核心编程--目录操作(包含文件操作)的更多相关文章
- paip.c++ qt 目录遍历以及文件操作
paip.c++ qt 目录遍历以及文件操作 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/a ...
- 积累的VC编程小技巧之文件操作
1.删除文件夹 // 删除文件夹及其所有内容void CBaseDoc::RemoveFolder(const CString &strPathName){ CString path = ...
- C# 目录下的文件操作
运用DirectoryInfo类的对象我们可以轻松的实现对目录以及和目录中的文件相关的操作,假如你要获得某个目录F:\Pictures下的所有BMP文件,那么通过下面的代码就可以实现该功能. 上面的代 ...
- python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数
目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...
- python-网络安全编程第二天(文件操作)
前言 才吃完火锅嘿嘿,吃完把今天所学的内容写个博客当做笔记用哈哈! 文件操作 f=open("test.txt",w)直接打开一个文件,如果文件不存在则创建文件open模式w:以写 ...
- Linux - 目录结构及文件操作
根目录 “/”:Linux 系统中最高层的目录 这个就是根目录 用 / 表示根目录 bin 目录:存放可执行文件 bin 目录下的文件都是平常使用的命令 在 Linux 系统中,一切都是文件 sbin ...
- Linux目录结构及文件操作
Linux文件目录遵循FHS标准 绝对路径:从根目录开始的路径:相对目录:从当前路径开始的路径 .表示当前目录,..表示上级目录,~表示当前用户的home目录,pwd获得当前绝对路径 新建文件 tou ...
- day4-基础 字符串操作,文件操作,字符转编码
1.字符串用法 name = 'daniel' print(name.capitalize()) #首字母大写 >>>daniel print(name.count('a')) #统 ...
- Go基础--终端操作和文件操作
终端操作 操作终端相关的文件句柄常量os.Stdin:标准输入os.Stdout:标准输出os.Stderr:标准错误输出 关于终端操作的代码例子: package main import " ...
随机推荐
- dump与load
dump与load 简化了dumps与loads
- LOJ#3119 随机立方体
解:极大值至少为1.我们尝试把最大那个数的影响去掉. 最大那个数所在的一层(指一个三维十字架)都是不可能成为最大值的. 考虑容斥.我们试图求除了最大值以外至少有k个极大值的概率. 我们钦定某k个位置是 ...
- Django项目:CRM(客户关系管理系统)--63--53PerfectCRM实现CRM客户报名流程缴费
#urls.py """PerfectCRM URL Configuration The `urlpatterns` list routes URLs to views. ...
- Spring-session整合到Redis
闲来无事,学习一下spring的session管理,作为一个初学者,我了解到了如下内容: 1.为何要用Spring-session 在传统单机web应用中,一般使用tomcat/jetty等web容器 ...
- webServices学习一(了解基础和作用。)
一.第一部分 1. 带着几个问题学习: l 什么是WebService? l 它能做什么? l 为什么要学习WebService? l 学习WebService ...
- 二、Web Service开发(.net)
.net平台内建了对Web Service的支持,包括Web Service的构建和使用.与其它开发平台不同,使用.net平台,你不需要其他的工具或者SDK就可以完成Web Service的开发了.. ...
- Hadoop 集群硬件配置
- CodeForces - 627A
CodeForces - 627Ahttps://vjudge.net/problem/326413/origina+b == (a&b)<<1 +(a^b);然后是位运算,如果对 ...
- Redis 混合存储最佳实践指南
Redis 混合存储实例是阿里云自主研发的兼容Redis协议和特性的云数据库产品,混合存储实例突破 Redis 数据必须全部存储到内存的限制,使用磁盘存储全量数据,并将热数据缓存到内存,实现访问性能与 ...
- 使用 WPF 生成图形
下载代码示例 基于一组与测试有关的数据来生成图形是一项常见的软件开发任务.根据我的经验,最常用的方法是将数据导入 Excel 电子表格,然后使用 Excel 内置的绘图功能手动生成图形.这种做法适用于 ...