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:@ ...
随机推荐
- Kettle(Pentaho)实现web方式远程执行job或transformation
一.背景 公司在用kettle做数据etl,每做完一个job或transformation发布上线想要立即执行看数据效果的话每次都是找运维同学登陆服务器打开kettle找到对应的文件点击执行,整个过程 ...
- 利用享元模式来解决DOM元素过多导致的网页解析慢、卡死的问题
我也不知道应该为本文的思路取一个什么比较恰当的标题,但是感觉符合享元模式的思路. 在一些网页应用中,有时会碰到一个超级巨大的列表,成千上万行,这时大部份浏览器解析起来就非常痛苦了(有可能直接卡死). ...
- 从jvm的角度来看java的多线程
最近在学习jvm,发现随着对虚拟机底层的了解,对java的多线程也有了全新的认识,原来一个小小的synchronized关键字里别有洞天.决定把自己关于java多线程的所学整理成一篇文章,从最基础的为 ...
- 源码(05) -- java.util.AbstractCollection<E>
java.util.AbstractCollection<E> 源码分析(JDK1.7) ------------------------------------------------- ...
- Python单元测试——深入理解unittest
单元测试的重要性就不多说了,可恶的是python中有太多的单元测试框架和工具,什么unittest, testtools, subunit, coverage, testrepository, nos ...
- iOS Plist 文件的 增 删 改
一:Plist 文件的创建 Plist 文件作为我们IOS开发的一种数据存储文件,还是经常会用到的.在看<X-code江湖录>的时候,看到了这一点.自己就写了一下,把写的东西分享出来!先看 ...
- 单页应用SPA的路由
关于单页应用 单页Web应用(single page web application,SPA),就是只有一张Web页面的应用,是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用 ...
- handlebars使用总结
对自己使用handlebars做一个小总结,以后忘记了,好有地方看一下,不会用的小伙伴也可以借鉴一下,写的不好. 使用 Handlebars的安装是比较简单和方便的;handlebars是一个纯JS库 ...
- 读书笔记 effective c++ Item 15 在资源管理类中提供对原生(raw)资源的访问
1.为什么需要访问资源管理类中的原生资源 资源管理类是很奇妙的.它们是防止资源泄漏的堡垒,没有资源泄漏发生是设计良好的系统的一个基本特征.在一个完美的世界中,你需要依赖这样的类来同资源进行交互,绝不 ...
- [译]AngularJS 1.3.0 开发者指南(一) -- 介绍
[译]AngularJS 1.3.0 开发者指南(一) -- 介绍 Angular是什么 ? AngularJS是一款针对动态web应用的结构框架. 它可以让像使用模板语言使用HTML, 并且可以扩展 ...