【二十六】php之文件编程
1.获取文件的相关信息
fopen、fstat、fclose(打开文件、获取文件相关信息、关闭文件)
filesize、filectime、filemtime、fileatime(文件大小、上次change时间、文件修改时间、文件访问时间)
<?php
// 方式一:
$file_path="test.txt";
// 打开文件
// a+ 代表读写方式,并将指针取向末尾
if($fp=fopen($file_path,"a+" )){
$file_info=fstat($fp);
echo "<pre>";
print_r($file_info); //打印这个文件的相关信息。返回的是一个关联数组
echo "</pre>";
echo "<br/>文件大小是{$file_info['size']}";
echo "<br/>文件上次修改时间是".date("Y-m-d H:i:s",$file_info['mtime']);
echo "<br/>文件上次访问时间是".date("Y-m-d H:i:s",$file_info['atime']);
echo "<br/>文件上次changge时间是".date("Y-m-d H:i:s",$file_info['ctime']);
}else
{
echo "打开文件失败";
}
// 关闭文件
fclose($fp); // 方式二:在不打开文件的情况下获取文件的size和ctime
echo "<br/>".filesize($file_path);
echo "<br/>".date("Y-m-d H:i:s",fileatime($file_path));
echo "<br/>".date("Y-m-d H:i:s",filectime($file_path));
echo "<br/>".date("Y-m-d H:i:s",filemtime($file_path));
?>
2.读取文件内容
fread(读文件内容)
file_get_contens、feof、str_replace(获取文件所有内容、检测是否已到达文件末尾、替换字符串内容)
<?php
// 1.打开文件
// 判断文件是否存在
// 2.读取内容
// 3.替换回车
// 4.关闭文件 $file_path="test.txt";
// 第一种读取方式****************
if (file_exists($file_path)) {
$fp=fopen($file_path, "a+");
$con=fread($fp, filesize($file_path));
// 替换换行
$con=str_replace("\r\n", "<br/>", $con);
echo $con;
}else{
echo "文件不存在";
} // 第二种读取方式****************
// file_get_contents:读取文件中所有的内容
$con=file_get_contents($file_path);
$con=str_replace("\r\n", "<br/>", $con);
echo $con; // 第三种读取方式****************
$buff=1024;
if (file_exists($file_path)) {
$fp=fopen($file_path, "a+");
// feof:检测是否已到达文件末尾
while (!feof($fp)) {
$str=fread($fp, $buff);
}
$str=str_replace("\r\n", "<br/>", $str);
echo $str;
}else{
echo "文件不存在";
}
?>
3.写文件操作
fwite(往文件写内容)
file_put_contents(将一个字符串写入文件)
<?php
// 1.打开文件
// 判断文件目录是否存在
// 2.如果存在,打开目录
// 3.使用fwrite往文件写内容
// 4.关闭文件
echo "方式一:*******************************************************";
$file_path="test.txt";
if (file_exists($file_path)) {
$fp=fopen($file_path, "a+");
$con="\r\nfighting~~~haha";
for ($i=0; $i <10 ; $i++) {
fwrite($fp,$con );
}
}else{
echo "文件不存在";
}
echo "添加成功";
fclose($fp);
echo "方式二:*******************************************************";
//直接获取文件内容
//file_put_contents:需要填最后面的参数。如果不填为重写文件内容,而不是追加
$con2="hello";
file_put_contents($file_path, $con2,FILE_APPEND);
?>
4.拷贝文件
copy(拷贝文件)
<?php
$file="54b5cd917e0747547.png";
$newfile="test.png";
if (!copy($file, $newfile)) {
echo "拷贝失败";
}else{
echo "拷贝成功";
}
?>
5.创建文件夹
mkdir(新建目录)
<?php
//创建文件夹
//这是创建单个文件夹******************************************
$path="D:/wamp64/www/filestream/cmftest";
// 1.先判断这个目录是否存在
// 如果存在则提示该目录已经存在
// 如果不存在则新建该目录
if (!is_dir($path)) {
if (mkdir($path)) {
echo "创建成功";
}else{
echo "创建失败";
}
}else{
echo "该文件夹已经存在了";
}
//这是创建多个文件夹(递归)******************************************
//注意:创建多个需要带参数
$path="D:/wamp64/www/filestream/cmftest/aaa/bbb/ccc/ddd/eee";
if (!is_dir($path)) {
if (mkdir($path,0777,true)) {
echo "创建成功";
}else{
echo "创建失败";
}
}else{
echo "该文件夹已经存在了";
}
?>
6.删除文件夹
mkdir(删除文件夹)
<?php
//注意:
//1.不能多级删除
//2.如果文件夹下面有东西,不能删除成功
$path="D:/wamp64/www/filestream/cmftest/aaa/bbb/ccc/ddd/eee";
if (rmdir($path)) {
echo "删除成功";
}
?>
7.创建文件
<?php
$path="D:/wamp64/www/filestream/cmftest/aa.txt";
$fp=fopen($path,"w+");
fwrite($fp, "hello");
fclose($fp);
echo "创建文件成功";
?>
8.删除文件
delete、unlink
<?php
$file_path="D:/wamp64/www/filestream/cmftest/aa.txt";
if (is_file($file_path)) {
if (unlink($file_path)) {
echo "删除成功";
}else{
echo "删除失败";
}
}else{
echo "这个文件不存在";
}
?>
上传文件程序:
updown.php
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h1>文件上传</h1>
<form action="updownpro.php" method="post" enctype="multipart/form-data">
<table>
<tr><td><br/>请输入用户名:</td><td><input type="text" name="username"/></td></tr>
<tr><td><br/>请介绍你上传的文件:</td><td><textarea name="fileintro" rows="2" cols="80"></textarea></td></tr>
<tr><td><br/>请选择你要上传的文件:</td><td><input type="file" name="myfile"/></td></tr>
<tr><td><br/><input type="submit" value="上传文件"></td></tr>
</table>
</form>
</body>
</html>
updownpro.php
<?php
$username=$_POST['username'];
$fileintro=$_POST['fileintro'];
// echo "<pre>";
// print_r($_FILES);
// print_r($_SERVER);
// echo "</pre>";
// 1.先判断文件是否是通过http post上传的
// 2.如果是,则将文件转移到服务器放上传资源的地方
//获取文件大小。如果文件超过2m,不允许上传,并退出程序(解决限制文件大小)
$filesize=$_FILES['myfile']['size'];
// $filesize的文字大小是以字节数算的
if ($filesize>2*1024*1024) {
echo "文件大小超过2m啦";
exit();
}
// 获取文件类型,限制类型上传(解决限制类型)
// 使用运算符&&。如果两种类型都不是,则提示他类型错误
if ($_FILES['myfile']['type']!="audio/mp3" && $_FILES['myfile']['type']!="image/png") {
echo "只能上传图片文件及音乐文件";
exit();
}
// 判断是否上传ok
if (is_uploaded_file($_FILES['myfile']['tmp_name'])) {
$uploadfile=$_FILES['myfile']['tmp_name'];
// 给用户动态生成文件夹(解决多个用户上传同一个文件名的文件问题)
$userpath=$_SERVER['DOCUMENT_ROOT']."/filestream/cmftest/".$username;
if (!file_exists($userpath)) {
mkdir($userpath);
}
// 这个路径把所有资源都放在服务器上
// $movetofile=$_SERVER['DOCUMENT_ROOT']."/filestream/cmftest/".$_FILES['myfile']['name'];
// 这个路径是把资源放在各自用户的文件夹上
// $movetofile=$userpath."/".$_FILES['myfile']['name'];
// 这个路径是为了防止同个用户上传同一个文件名的问题
$movetofile=$userpath."/".time().rand(1,1000).strrchr($_FILES['myfile']['name'], ".");
echo "<pre>";
print_r($_FILES);
echo "</pre>";
// iconv:给文件类型转码
if(move_uploaded_file($uploadfile, iconv("utf-8", "gb2312", $movetofile))){
echo $_FILES['myfile']['name']."添加成功";
}else{
echo "添加失败111111";
}
}else{
echo "添加失败";
}
?>
如图:


【二十六】php之文件编程的更多相关文章
- Python脚本控制的WebDriver 常用操作 <二十六> 上传文件
测试用例场景 上传文件的方法是找到上传文件的对象,通常是的对象.然后直接往这个对象send_keys,传入需要上传文件的正确路径.绝对路径和相对路径都可以,但是上传的文件必须存在,否则会报错. Pyt ...
- python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码
python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...
- 二十六、Jcreator使用初步
摘自http://blog.csdn.net/liujun13579/article/details/7751464 二十六.Jcreator使用初步 Jcreator是一个小巧灵活的Java开发工具 ...
- 二十六:Struts2 和 spring整合
二十六:Struts2 和 spring整合 将项目名称为day29_02_struts2Spring下的scr目录下的Struts.xml文件拷贝到新项目的scr目录下 在新项目的WebRoot-- ...
- WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[实现篇]
原文:WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[实现篇] 元数据的导出就是实现从ServiceEndpoint对象向MetadataSet对象转换的过程,在WCF元数据框 ...
- VMware vSphere 服务器虚拟化之二十六 桌面虚拟化之View Persona Management
VMware vSphere 服务器虚拟化之二十六 桌面虚拟化之View Persona Management 实验失败告终,启动VMware View Persona Management服务报10 ...
- mysql进阶(二十六)MySQL 索引类型(初学者必看)
mysql进阶(二十六)MySQL 索引类型(初学者必看) 索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型. 在数 ...
- JAVA之旅(二十六)——装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片
JAVA之旅(二十六)--装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片 一.装饰设计模式 其实我们自定义re ...
- 模板方法模式 Template method 行为型 设计模式(二十六)
模板方法模式 Template method 上图为网上百度的一份简历模板截图 相信大家都有求职的经历,那么必然需要简历,写简历的时候,很可能你会网上检索一份简历模板,使用此模板的格式,然后替换为 ...
- 二十六个月Android学习工作总结【转】
原文:二十六个月Android学习工作总结 1.客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍. 2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该 ...
随机推荐
- FPGA时钟分频(转)
http://www.cnblogs.com/fpga/archive/2009/10/24/1589318.html 占空比为50%的分频 偶数分频比较简单 比如N分频,那么计数到N/2-1,然后时 ...
- linux下高可用LVS搭建及配置方法
一,安装与配置ipvsadm ipvsadm --help #查询是否安装成功 二,配置Director Server服务器 1. ifconifg eth0:0 183.61.87.4 ...
- 【Java】单词倒序输出
如何将一段单词倒序输出?把"Hello Java Hello China"变成"China Hello Java Hello"? 看起来好像很简单,只需要把字符 ...
- angular2.x指令
1.指令 *ngIf: 判断 isActive 为true时 <user-detail> 生效展示 <user-detail *ngIf="isActive"&g ...
- 盘点一下立过的flag并立几个flag
暑假前说了,要学opencv3,要看完冰火,要健身,要家教挣钱. 好样的,全都没落下. opencv3几乎是把80%的demo码了一遍. 冰火看完,还顺带学了一波知识,收获颇丰,搞到了马丁老爷子的几本 ...
- 高并发场景 LVS 安装及高可用实现
1.1 负载均衡介绍 1.1.1 负载均衡的妙用 负载均衡(Load Balance)集群提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据处理能力.提高网 ...
- 【Win 10 应用开发】在后台播放视频
从 1607 (14393)版本开始,MediaPlayer 类就可以在前台与后台之间无缝播放,你不必再考虑前台与后之间的通信,所以从 14393 开始,你就不需要再用 BackgroundMedia ...
- Core 核心标签库->运算式操作
jstl--->Core 核心标签库->运算式操作 -->out.remove.set.catch <c:out>:用来显示资料的内容 语法1:没有本体的内容 < ...
- uva11636-Hello World!
题意:已知有一行printf(“Hello World!”\n);以后就可以复制,问多少次之后就可以达到所需要的行数. 题解:模拟: #include<iostream> #include ...
- 一个web图片热点生成工具(winform开发) 附源码
给图片加热点是web开发中经常用到的一个功能.这方面的工具也不少. 为了更好的满足自己的需求,写了一个winform程序. 可以方便的给图片加热点,更方便灵活! 源码下载 http://downloa ...