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:@ ...
随机推荐
- 双击startup.bat启动tomcat时闪退原因及解决方案
在启动免安装tomcat时,很容易遇到双击startup.bat,启动窗口闪退而tomcat服务未启动的状况. 具体原因:tomcat在启动时,需要读取环境变量和配置信息,如果缺少Java环境,即缺少 ...
- 编程练习------C/C++分别实现字符串与整数的转换
C/C++分别实现字符串与整数的转换 前提:不使用 itoa 和 atoi. 方法一.C和C++通用的一种转换手段是: 1.整数转化为字符串:采用加'0',再逆序的办法,整数加'0'就会隐性转化成ch ...
- JAVA构造函数的继承
1.子类中无参构造函数,可直接继承父类中无参构造函数,前提是所有变量均为public 如下:父类Student中有空构造函数Student(),子类Pupil中有空构造函数Pupil(),后者会继承前 ...
- .Net程序员学用Oracle系列(15):DUAL、ROWID、NULL
1.DUAL 表 2.ROWID 类型 2.1.利用 ROWID 查询数据 2.2.利用 ROWID 更新数据 3.NULL 值 3.1.NULL 与空字符串 3.2.NULL 与函数 3.3.NUL ...
- linux系统盘使用率达到100%的问题查找和解决方法
今天公司云服务器报警系统发来短信,系统磁盘空间不够,登录服务器进行查看,磁盘使用虑达到100%, 感觉比较奇怪,所存的东西并不多,怎么会将磁盘占满,而且数据都是存在数据盘下,通过简单的进行 ...
- js-组件-轮播
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 学生管理系统(C语言)
#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 3 #define LEN ...
- 初学jQuery之jQuery事件与动画
今天我们就谈谈jquery中的事件和简单动画吧,它们毕竟基础是进阶华丽的根本!! 1.事件 1.window事件 ready 准备就绪 2.鼠标事件 方法 ...
- HNOI2015 Day 2题解
昨天做了HNOI day 2,感觉好像还是可做的,想当年什么splay还是高级算法,现在点剖什么就老考了简直丧病,虽然第二题还没写那就先当下嘴巴选手吧= = T1:[HNOI2015]落忆枫音 描述: ...
- 快看我解决了一个Nginx的小问题
前言 最近小编写项目的时候,需要用到Nginx服务器,对于Nginx正常安装就好了详情见[我是传送门],正当一切安好的时候问题来了,这台服务器的80端口竟然被占用了,什么鬼?怎么办,只有改端口.具体方 ...