php文件基本操作与文件管理功能
文件的基本操作
先来看一下PHP文件基础操作,请看强大注释
<body>
<?php var_dump(filetype("./img/11.png")); //判断返回得是文件还是目录,返回sile为文件,dir为目录(文件夹) var_dump(is_dir("./img/11.png")); //判断给的文件是不是一个目录,目录为ture,文件为false var_dump(is_file("./img")); //判断是否为文件,同上 var_dump(date("Y-m-d H:i:s",fileatime("./img/11.png"))); //上次访问时间 var_dump(date("Y-m-d H:i:s",filectime("./img/11.png"))); //创建时间 var_dump(date("Y-m-d H:i:s",filemtime("./img/11.png"))); //修改时间 var_dump(filesize("./img/11.png")); //获取文件大小 var_dump(file_exists("/QQPCMgr/www/wenjian/img/22.png")); //在php里面根/则是磁盘 echo $_SERVER['DOCUMENT_ROOT']; //获取到服务器根路径 echo basename("/QQPCMgr/www/wenjian/img/22.png"); //返回22.png带后缀的文件名 echo basename("/QQPCMgr/www/wenjian/img/22.png",".png"); //扔上后缀之后只显示文件名(获取文件名) echo dirname("/QQPCMgr/www/wenjian/img/22.png"); //返回的是不包含文件名的路径(获取文件名以上的) var_dump(pathinfo("/QQPCMgr/www/wenjian/img/22.png")); //这个获取的很全面,都能获取到 echo realpath("./img/11.png"); //真实路径:可以把相对路径转换为绝对路径 var_dump(glob("./ce/*")); //取到这个文件夹里所有的文件,加后缀为条件 ?>
<!--<img src="/wenjian/img/11.png" />--> <!--在网页里根/代表的是www目录--> </body>
文件整体操作:
<?php //touch("./11.txt"); //创建文件 //copy("11.txt","./ce/11.txt"); //复制文件 //unlink("./11.txt"); //删除文件 //echo file_get_contents("./ce/11.txt");本地 //echo file_get_contents("http://www.baidu.com");远程 //读取文件所有内容 //file_put_contents("./11.txt","Myshao"); //往文件里面存储内容 //readfile("./11.txt"); //读取并输出 //$arr = file("./shouye.php"); //var_dump($arr); //读取文件内所有内容,并扔到数组显示 //$ff = fopen("./11.txt","a"); //打开文件资源,详情见注1; //echo fgetc($ff); //读取一个字符 //echo fgets($ff); //读取一行字符 //echo fread($ff,2); //规定读多长 //fwrite($ff,"shao"); //写入内容
注1:打开和读取文件
php使用fopen()函数的方式,语法结构如下
Resource fopen (string $filename,string $mode) Filename是目标文件名,打开本地文件也可以打开远程文件,打开远程文件需要采用http://...形式,假如目标文件在
ftp服务器上,则采用形式ftp://...。
参数mode是目标文件打开形式,参数$mode是可以接收的模式。
文件打开方式表:
目录资源的打开与关闭:但凡有开就有关,否则会影响到后面的删除等操作;
<?php $fname = "./ce/gf"; $d = opendir($fname); //打开文件资源 while ($url = readdir($d)) { echo $fname."/".$url."<br/>"; // 仅读取文件名,把路径拼上=完整路径 } var_dump(glob("./*")); closedir($d); //关资源
以上就是一些基础的语句了,来做点练习:
例:返回一个文件夹下的所有文件数量;
如果想要计算出ajax目录下有多少的文件,可以用下面封装的方法shu()来遍历目录,可以计算出ce目录下其他的文件夹里面的文件的总和,
<?php function shu($url) { $sl = 0; $arr = glob($url); //循环遍历 foreach($arr as $v) { //判断是不是一个文件 if(is_file($v)) { //如果是一个文件+1 $sl++; } else { $sl +=shu($v."/*"); } } return $sl; } echo shu("./ce/*"); //最后给方法一个路径进行查找 ?>
看一下输出:
再来一个!
例:删除文件
<?php $fname = "./ce/gf"; $d = opendir($fname); //打开文件资源 while ($url = readdir($d)) { echo $fname."/".$url."<br/>"; // 仅读取文件名,把路径拼上=完整路径 } var_dump(glob("./*")); closedir($d); //关资源 //删除文件夹(非空文件夹) function shan($url) { // 清空文件夹 $d = opendir($url); // 打开 while ($u = readdir($d))//$u现在是文件名 { // 排除... if($u!="." && $u!="..") { $fname = $url . "/" . $u; //完整带路径的文件名 if (is_file($fname))//如果是一个文件 { unlink($fname); } else //如果是一个文件夹 { shan($fname); } } } closedir($d); //关闭 rmdir($url); } shan("./122"); ?>
这样122目录里面所有的东西,不管是文件夹还是文件都会被删除;
实现文件管理功能
1.先把查看文件的功能做出来,让他把所有的文件与文件夹啊显示出来;
<body> <?php //定义文件目录 $fname = "./ce"; //便利目录下的所有文件显示 $arr = glob($fname."/*"); foreach ($arr as $v) { //从完整路径中取文件名 $name = basename($v); echo "<div class='item' url='{$v}'>{$name}</div>"; } ?> </body>
图:
接下来给文件夹特殊显示一下把:
输出之前需要判断,判断是不是一个文件夹:
//从完整路径中取文件名 $name = basename($v); if(is_dir($v)){ echo "<div class='item dir' url='{$v}'>{$name}</div>"; } else { echo "<div class='item' url='{$v}'>{$name}</div>"; }
如果是个文件夹,给他背景颜色改变一下就好啦
图:
2.给文件夹添加双击事件:
双击实现进入这个目录;
js代码:
<script> $(".dir").dblclick(function(){ var url = $(this).attr("url"); $.ajax({ url:"chuli.php", data:{url:url}, type:"POST", dataType:"TEXT", success:function(data) { window.location.href="wenwen.php"; } }); }) </script>
处理页面:
<?php session_start(); $url = $_POST["url"]; $_SESSION["fname"] = $url;
这样就可以实现双击进入此文件夹:
3.返回上一级,找到上一级目录,写个div
$pname = dirname($fname); echo "<div id='shang' url='{$pname}'>返回上一级</div>";
图:
写双击事件:
<script> $("#shang").dblclick(function(){ var url = $(this).attr("url"); $.ajax({ url:"chuli.php", data:{url:url}, type:"POST", dataType:"TEXT", success:function(data) { window.location.href="wenwen.php"; } }); }) </script>
返回到文件目录后使其隐藏:
//上一级的目录 $pname = dirname($fname); if(realpath($fname)=="F:\\QQPCMgr\\WWW\\wenjian") {} else { echo "<div id='shang' url='{$pname}'>返回上一级</div>"; }
这样的话当我返回到wenjian目录的时候,使其隐藏:
4.删除功能
在文件div里面加删除按钮:
echo "<div class='item' url='{$v}'>{$name} <input type='button' value='删除' url='{$v}' class='sc'/> </div>";
来写按钮的点击事件:
js代码:
$(".sc").click(function(){ //确认删除提示 var av = confirm("确定要删除"); if(av){ var url = $(this).attr("url"); $.ajax({ url: "shan.php", data: {url: url}, type: "POST", dataType: "TEXT", success: function (data) { window.location.href = "wenwen.php"; } }); } })
删除的处理页面:
<?php $url = $_POST["url"]; unlink($url);
这样完成后,当我点击删除:
再点击确定,即可删除
总代码:
管理查看页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script src="jquery-1.11.2.min.js"></script> <style> .item{ width: 500px; height: 30px; border: 1px solid slateblue; background-color: aquamarine; line-height: 30px; } .dir{ background-color: chocolate; color: aliceblue; } #shang{ width: 500px; height: 30px; border: 1px solid slateblue; background-color: brown;color: aliceblue; line-height: 30px; } </style> </head> <body>
<?php session_start(); //定义文件目录 $fname = "./ce"; if(!empty($_SESSION["fname"])) { //如果session里面的不为空 $fname = $_SESSION["fname"]; } //上一级的目录 $pname = dirname($fname); if(realpath($fname)=="F:\\QQPCMgr\\WWW\\wenjian") {} else { echo "<div id='shang' url='{$pname}'>返回上一级</div>"; } //便利目录下的所有文件显示 $arr = glob($fname."/*"); foreach ($arr as $v) { //从完整路径中取文件名 $name = basename($v); if(is_dir($v)){ echo "<div class='item dir' url='{$v}'>{$name}</div>"; } else { echo "<div class='item' url='{$v}'>{$name} <input type='button' value='删除' url='{$v}' class='sc'/> </div>"; } } ?>
<script> $(".dir").dblclick(function(){ var url = $(this).attr("url"); $.ajax({ url:"chuli.php", data:{url:url}, type:"POST", dataType:"TEXT", success:function(data) { window.location.href="wenwen.php"; } }); }) $("#shang").dblclick(function(){ var url = $(this).attr("url"); $.ajax({ url:"chuli.php", data:{url:url}, type:"POST", dataType:"TEXT", success:function(data) { window.location.href="wenwen.php"; } }); }) $(".sc").click(function(){ //确认删除提示 var av = confirm("确定要删除"); if(av){ var url = $(this).attr("url"); $.ajax({ url: "shan.php", data: {url: url}, type: "POST", dataType: "TEXT", success: function (data) { window.location.href = "wenwen.php"; } }); } }) </script> </body> </html>
处理:
<?php session_start(); $url = $_POST["url"]; $_SESSION["fname"] = $url;
删除:
<?php $url = $_POST["url"]; unlink($url);
php文件基本操作与文件管理功能的更多相关文章
- (大数据工程师学习路径)第一步 Linux 基础入门----目录结构及文件基本操作
Linux 目录结构及文件基本操作 介绍 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux 目录 ...
- Linux 目录结构及文件基本操作
Linux 目录结构及文件基本操作 实验介绍 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux ...
- 文件基本操作 (C语言)
一切皆文件 ---Linux 头文件 <stdio.h> 中定义了文件的相关操作 #include <stdio.h> 文件操作基本流程: 打开:fopen 相关操作 关闭:f ...
- delphi android路径 TPath 文件路径,文件管理
获取Android相关文档路径 delphi 新路径.文件功能 IOUtils单元,文件路径,文件管理 http://docwiki.embarcadero.com/RADStudio/Berlin/ ...
- 我也说说Emacs吧(3) - 文件基本操作
Spacemacs文件基本操作 有了前两讲的积累,我们知道了: 1. 我们既要学习emacs的操作,也要学习vi的操作 2. emacs是一个可扩展的平台,我们并不是从头配置,而是使用一套成熟的集成方 ...
- delphi 文件存取方法与文件管理组件
9.2 文件存取方法与文件管理组件 9.2.1 存取文件的类方法 Delphi在许多需要与文件打交道的类中定义了文件存取方法,使用这些方法可以非常方便地将类中的数据保存到文件中,或从文件中读取所需 ...
- java之文件基本操作
java之文件基本操作 1 使用 BufferedReader 在控制台读取字符 public static void readChar() throws IOException{ char c; I ...
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
- 多文件上传 iOS功能
多文件上传 iOS功能,原文来自ios教程网整理的,大家可以看看演示:ios.662p.com ,喜欢的朋友可以看看我的博客吧. NSURL* url = [NSURL URLWithString:@ ...
随机推荐
- iOS横向瀑布流的封装
前段时间, 做一个羡慕, 需要使用到瀑布流! 说道瀑布流, 或许大家都不陌生, 瀑布流的实现也有很多种! 从scrollView 到 tableView 书写的瀑布流, 然后再到2012年iOS6 苹 ...
- Java性能优化_转载
一.避免在循环条件中使用复杂表达式 1.在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 2.不可使用多层循嵌套. 二.集合大 ...
- Jmeter生成html格式测试报告
使用jmeter进行性能测试,运行完毕后生成html格式的测试报告,需要进行如下操作: 1.在C:\apache-jmeter-3.0\bin文件夹下的user.properties文本中添加如下信息 ...
- ionic,Angular 开发实践
1.实践参考 http://www.jianshu.com/p/ea0dcf1d31c9 原文思路搭建 2. 环境搭建步骤 : a. 安装node b.安装 cordova sudo n ...
- app集成微信支付服务端代码-php版本
1.微信支付分为两种,一种是微信公众品台的微信支付,另一种是微信开放平台的微信支付 2.上周做的是开放品台的微信支付,把遇到的问题总结一下 第一,下载官方提供的代码,解压后放到根目录下,然后认真读文档 ...
- laravel项目中手机浏览器在线阅读pdf文件-->PDFJS插件
第一步:下载链接:http://mozilla.github.io/pdf.js/getting_started/#download 第二步:将下载的文件放在项目中. 第三步:在项目中想要预览的地方给 ...
- 《剑指offer》— JavaScript(1)二维数组中的查找
二维数组中的查找 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ** ...
- BZOJ 1096: [ZJOI2007]仓库建设(动态规划+斜率优化)
第一次写斜率优化,发现其实也没啥难的,没打过就随便找了一份代码借(chao)鉴(xi)下,不要介意= = 题解实在是懒得写了,贴代码吧= = CODE: #include<cstdio># ...
- HTML第一课
<标签名 属性>内容</标签名> <标签/> 静态网页与动态网页的区别:是否从数据库提取数据相对路径跟绝对路径../代表高一级的 牛逼的空格< ...
- JavaScript中的函数使用
append() 是代表改变格子的内容 prev()是代表前一个格子 next()是代表下一个相邻的格子 hide()是代表隐藏 show()是代表显示 childen()是代表子节点 eq()是代表 ...