精华内容
下载资源
问答
  • 文件处理,文件权限相关

    一、PHP系统文件处理

    /*  PHP文件系统处理
     *	所有文件处理都是使用系统函数完成的。
     *	是基于Linux/Unix系统为模型
     *
     *  	文件系统处理的作用:
     *  		1. 所有的项目离不开文件处理
     *  		2. 可以用文件长时间保存数据
     *  		3. 建立缓存, 服务器中文件操作
     *
     *  	文件处理
     *		1. 文件类型
     *			以Linux为模型的, 在Windows只能获取file, dir或unknow 三种类型
     *			在Linux/Unix下, block, char, dir, fifo, file, link, unknown和种型
     *			block :块设置文件,磁盘分区,软驱, cd-rom等
     *			char: 字符设备,I/O 以字符为单位, 键盘,打印机等
     *			dir: 目录也是文件的一种
     *			fifo: 
     *			file:
     *			link: 
     *			unknown	
     *
     * 			filetype("目录或文件名")
     *
     * 			is_array();
     * 			is_int();
     * 			is_string();
     * 			is_null;
     * 			is_bool();
     * 			
    		is_dir -- 判断给定文件名是否是一个目录
    		is_executable -- 判断给定文件名是否可执行
    		is_file -- 判断给定文件名是否为一个正常的文件
    		is_link -- 判断给定文件名是否为一个符号连接
    		is_readable -- 判断给定文件名是否可读
    		is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的
    		is_writable -- 判断给定的文件名是否可写
    		is_writeable -- is_writable() 的别名
     *			
     *
     *		2. 文件的属性
     *			file_exists();
     *			filesize();
     *			is_readable();
     *			is_writeable();
     *			filectime();
     *			filemtime();
     *			fileactime();
     *			stat();
     *
     *		3. 和文件路径相关的函数
     *			
     *			相对路径:相对于当前目录的上级和下级目录
     *				.  当前目录
     *				.. 上一级目录
     *
     *				./php/apache/index.php
     *				php/apahce/index.php
     *				login.php
     *				./login.php
     *				../images/tpl/logo.gif
     *			
     *
     *			路径分隔符号
     *				linux/Unix    "/"
     *				windows       "\"
     *
     *				DIRECTORY_SEPARATOR  为不同平台,在Windows \ Linux /
     *
     *				不管是什么操作系统PHP的目录分割符号都支技 / (Linux)
     *
     *				在PHP和Apache配置文件中如果需要指定目录,也使用/作为目录符号
     *
     *			绝对路径:
     *				/ 根路径
     *
     *				/images/index.php
     *
     *				指的操作系统的根
     *				指的是存放网站的文档根目录
     *				
     *                              分情况
     *
     *                              如果是在服务器中执行(通过PHP文件处理函数执行)路径 则 “根”指的就是操作系统的根
     *				如果程序是下载的客户端,再访问服务器中的文件时,只有通过Apache访问,“根”也就指的是文档根目录
     *
     *				http://www.xsphp.com/logo.gif
     *
     *
     *			basename(url)
     *			dirname(url)
     *			pathinfo(url)
     *		
     *
     *
     *		
     *		4. 文件的操作(创建文件,删除文件,移动文件)
     *		5. 文件的打开与关闭(读文件中的内容, 向文件中写内容)
     *		6. 文件内部移动指针
     *		7. 文件的锁定一些机制处理
     *	
     *
     *  	目录的处理
     *  		1. 目录的遍历
     *  		2. 目录的创建
     *  		3. 目录的删除
     *  		4. 目录的复制
     *		5. 统计目录大小
     *
     *
     *  	文件上传和下载
     *  		1. 上传
     *  		2. 下载
     *
     *
     */
    


    二、PHP文件属性函数实例

    date_default_timezone_set("PRC");
    
    	function getFilePro($fileName){
    		if(!file_exists($fileName)){
    			echo "文件或目录{$fileName} 不存在<br>";
    			return;
    		}else{
    			echo "文件的类型".filetype($fileName)."<br>";
    		}	
    
    		if(is_file($fileName)){
    			echo "这是一个文件<br>";
    			echo "文件的大小为".getFileSize(filesize($fileName))."<br>";
    		}
    
    		if(is_dir($fileName)){
    			echo "这是一个目录<br>";
    		}
    
    		if(is_readable($fileName)){
    			echo "这个文件可以读<br>";
    		}
    		if(is_writable($fileName)){
    			echo "这个文件可以写<br>";
    		}
    		if(is_executable($fileName)){
    			echo "这个文件可以执行<br>";
    		}
    
    		echo "文件的创建时间:".date("Y-m-d H:i:s",filectime($fileName))."<br>";
    		echo "文件的修改时间:".date("Y-m-d H:i:s",filemtime($fileName))."<br>";
    		echo "文件的最后访问时间:".date("Y-m-d H:i:s",fileatime($fileName))."<br>";
    
    	}
    
    	function getFileSize($size){
    		$dw="Byte";
    
    		if($size >= pow(2, 40)){
    			$size=round($size/pow(2, 40), 2);
    			$dw="TB";
    		}else if($size >= pow(2, 30)){
    			$size=round($size/pow(2, 30), 2);
    			$dw="GB";
    		}else if($size >= pow(2, 20)){
    			$size=round($size/pow(2, 20), 2);
    			$dw="MB";
    		}else if($size >= pow(2, 10)){
    			$size=round($size/pow(2, 10), 2);
    			$dw="KB";
    		}else {
    			$dw="Bytes";
    		}
    		return $size.$dw;
    	
    	}
    
    	getFilePro("demo.txt");
    	getFilePro("hello");


    三、PHP获取文件状态函数

    date_default_timezone_set("PRC");
    
    	echo '<pre>';
    	print_r(stat("demo.txt"));
    	echo '</pre>';


    四、使用文件系统缓存数据方案

    $cache=5;                   //缓存时间
    $cachefile="cache.txt";      //缓存的文件
    
    
    
    if(file_exists($cachefile) && (time()-$cache) < filemtime($cachefile)) {
       echo file_get_contents($cachefile); //如果在缓存的10秒内,就从缓存文件中获取数据	
    	
    }else{
    		file_put_contents($cachefile, date("Y-m-d H:i:s", time()));
    }


    五、文件路径相关函数实例

    $url1="./aaa/bbb/index.php";
    	
    echo basename($url1)."<br>";  //文件名称
    	echo dirname(dirname($url1))."<br>"; //父级目录
    	echo dirname($url1)."<br>"; //文件目录
    echo '<pre>';       //文件路径信息
      print_r($path=pathinfo($url3));
      echo '</pre>';
        
    echo $path["extension"];

    六、文件系统权限相关的函数实例

      创建文件 touch("文件名")
      删除文件 unlink("文件路径");
      移动文件 为文件重新命名 rename("当前文件路径", “目录为文件路径”)
      复制文件 copy("当前", “目标”);
     			
      一定要有PHP执行这个文件权限, Apache, 一个用户
     
     
      和权限设计有关的函数
     
     
      ls -l  或 ll
    
      _rwxrwxrwx   777
    
      _ 类型 _文件  d 表示是目录  l  b   
    
      rwx 表这个文件的拥有者  r读 w写 x执行    
      rwx 表这个文件的拥有者所在的组  r读 w写 x执行
      rwx 其它用户对这个为文件的权限  r读 w写 x执行
    
    		r 4
    		w 2
    		x 1 
    
    		7 7 7  4+2+1  4+2+1 4+2+1
    			rwx   rwx  rwx
    		
    		644
    			4+2   4   4
    			rw_  r__ r__
    		754
    			
      chmod u=rwx,g=rw,o=x
      chmod 777  demo.php
      chmod 644  demo.html
    
      chown  mysql demo.php
    
      chgrp  apache demo.php
    
      chgrp -- 改变文件所属的组
      chmod -- 改变文件模式
      chown -- 改变文件的所有者
    
      filegroup -- 取得文件的组
      fileowner -- 取得文件的所有者

























    展开全文
  • HTML5表单及文件处理

    千次阅读 2019-09-14 11:26:37
    3、文件处理 通常可以使用表单提交文件,从而实现上传文件的功能。 1)选择文件的表单控件 使用file类型的input元素可以选择文件。 定义一个表单form1,其中包含一个用于选择文件的控件。 <!...

    1、HTML4表单

    表单是网页中的常用组件,用户可以通过表单向服务器提交数据。表单中可以包括标签(静态文本)、单行文本框、滚动文本框、复选框、单选按钮、下拉菜单(组合框)和按钮等控件。 

    1)定义表单

    可以使用<form>...</form>标签定义表单。

    表单的常用属性及说明
    属性具体描述
    id表单ID,用来标记一个表单
    name表单名
    action指定处理表单提交数据的脚本文件。脚本文件可以是ASP文件、ASP.net文件和PHP文件,它部署在Web服务器上,用于接收和处理用户通过表单提交的数据。
    method指定表单信息传递到服务器的方式,有效值为GET或POST。如果设置为GET,则当按下提交按钮时,浏览器会立即传送表单数据;如果设置为POST,则浏览器会等待服务器来读取数据。使用GET方法的效率较高,但传递的信息量仅为2KB,而POST方法没有此限制,所以通常使用POST方法。

    在action属性中指定处理脚本文件时可以指定文件的路径。可以使用绝对路径和相对路径两种方式指定脚本文件的位置。

    绝对路径是指从网站根目录( \ )到脚本文件的完整路径,如“\ShowInfo.php”或者“\php\ShowInfo.php”;绝对路径也可以是一个完整的URL,如“http://www.host.com/ShowInfo.php”。

    相对路径是从表单所在网页文件到脚本文件的路径。如果网页文件和脚本文件在同一目录下,则action属性中不需要指定路径,也可以使用“.\ShowInfo.php”指定处理脚本文件,“.”表示当前路径。还有一个特殊的相对路径,即“..”,它表示上级路径。如果脚本文件ShowInfo.php在网页文件的上级目录中,则可以使用“..\ShowInfo.php”指定处理脚本文件。

    2)文本区域

    文本区域是用于输入多行文本的表单控件。可以使用<textarea>标签定义文本区域。例如:

    <textarea name="details"></textarea>

    <textarea>标签的常用属性如下所示。

    <textarea>标签的常用属性
    属性具体描述
    cols设置文本区域的宽度
    disabled当此文本区首次加载时禁用此文本区
    name用来标记一个文本区域
    readonly指示用户无法修改文本区内的内容
    rows设置文本区域允许输入的最大行数

    3)组合框

    组合框也称为列表/菜单,是用于从多个选项中选择某个项目的表单控件。可以使用<select>标签定义组合框。

    组合框的常用属性如下所示。

    组合框的常用属性
    属性具体描述
    name名称,用来标记一个组合框
    option定义组合框中包含的下拉菜单项
    value定义菜单项的值
    selected

    如果指定某个菜单项的初始状态为“选中”,则在对应的option属性中使用selected

     

    2、HTML5表单的新特性

    表单验证

    通过表单控件的ValidityState对象验证表单。

    可以使用下面的方法获取表单myForm的myInput域的ValidityState对象。

    var valCheck = document.myForm.myInput.validity

    ValidityState对象的valid属性返回最终验证结果。如果通过验证,则返回true;否则返回false。

    ValidityState对象还包含8个约束条件属性,如下所示。这些约束条件属性都是如果通过验证,则返回true;否则返回false。

    ValidityState对象的约束条件属性
    属性具体描述
    valueMissing针对设置了required的表单元素,检查是否输入了数据
    typeMismatch针对email、number和url类型的表单元素,检查数据是否为指定类型
    patternMismatch针对设置了pattern的表单元素,检查数据是否满足指定模式
    tooLong针对设置了maxLength的表单元素,检查数据是否超长
    rangeUnderflow针对设置了min的range类型的表单元素,检查数据是否超过下限
    rangeOverflow针对设置了max的range类型的表单元素,检查数据是否超过上限
    stepMismatch针对设置了min、max以及step的range类型的表单元素。检查数据是否满足步长约束
    customError处理使用代码明确设置的错误,可以调用setCustomValidity(message)方法将表单控件置于customError状态

     

    3、文件处理

    通常可以使用表单提交文件,从而实现上传文件的功能。

    1)选择文件的表单控件

    使用file类型的input元素可以选择文件。

    定义一个表单form1,其中包含一个用于选择文件的控件。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Test</title>
        <style>
        </style>
    </head>
    
    <body>
    
        <input type="file" id="Files" name="files[]" multiple />
    
    <script>
    </script>
    
    </body>
    
    </html>

    multiple属性用于定义可以选择多个文件。file类型的input元素的界面如下所示。

    在JavaScript程序中,可以通过document.getElementsById('控件id')获取选择文件的控件对象。 

    2)检测浏览器是否支持HTML5 File API

    HTML5提供了一组File API,用于对文件进行操作,使程序员可以对选择文件的表单控件进行编程,更好地通过程序控制访问文件和文件上传等功能。在HTML5 File API中定义了一组接口,包括FileList接口、File接口、Blob接口、FileReader接口等。

    检查浏览器是否支持HTML5 File API实际上就是检查浏览器对这些接口的支持情况。

    • 使用window.FileList属性可以判断浏览器是否支持FileList接口;
    • 使用window.File属性可以判断浏览器是否支持File接口;
    • 使用window.Blob属性可以判断浏览器是否支持Blob接口;
    • 使用window.FileReader属性可以判断浏览器是否支持FileReader接口。

    如果以上属性都为True,则说明浏览器完全支持HTML5 File API,否则说明不支持。

    在网页中定义一个按钮,单击此按钮时,会检测浏览器是否支持HTML5 File API。

    定义按钮的代码如下。

    <button id="check" onclick="check();">检测浏览器是否支持HTML5 File API</button>

    单击按钮check将调用check()函数。定义check()函数的代码如下所示。

    function check() {
        if (window.File && window.FileReader && window.FileList && window.Blob) {
            alert("您的浏览器完全支持HTML5 File API。");
        }
        else {
            alert("您的浏览器不支持HTML5 File API。");
        }
    }

    经测试,在主流浏览器中,除Internet Explorer 9 外,Chrome、Firefox 和 Opera 等都完全支持HTML5 File API。

    3)FileList接口

    FileList接口是File API的重要成员,它代表由本地系统中选中的单个文件组成的数据,用于获取File类型的input元素选择的文件。

    定义FileList接口的代码如下。

    interface FileList {
        getter File item(unsigned long index);
        readonly attribute unsigned long length;
    };

    FileList接口的成员说明如下。

    • item方法:返回FileList数组的第index个数组元素,是一个File对象。
    • length:数组元素的数量。

    FileList接口的数组元素是一个File接口,它表示一个文件对象,其定义代码如下。

    interface File : Blob {
        readonly attribute DOMString name;
        readonly attribute Date lastModifiedDate;
    };

    File接口定义了以下两个属性。

    • name:返回文件名,不包含路径信息。
    • lastModifiedDate:返回文件的最后修改日期。

    File接口继承自Blob接口,Blob接口表示不变的裸数据,其定义代码如下。

    interface Blob {
        readonly attribute unsigned long long size;
        readonly attribute DOMString type;
        // slice Blob into byte-ranged chunks
        Blob slice(optional long long start,
                optional long long end,
                optional DOMString contentType);
        void close();
    };

    Blob接口定义了以下两个属性。

    • size:返回Blob对象的大小,单位是字节。
    • type:返回Blob对象媒体类型的字符串。

    Blob接口定义了以下两个方法。

    • slice:返回从start开始到end结束的contentType类型数据的新的Blob对象。
    • close:关闭Blob对象。

    在JavaScript中,可以使用下面的方法获取File类型的input元素的FileList数组。

    document.forms['表单名']['File类型的input元素名'].files

    获取FileList数组中的File对象的方法如下。

    document.forms['表单名']['File类型的input元素名'].files[index]

    或者

    document.forms['表单名']['File类型的input元素名'].files.item(index)

    演示FileList接口和File接口的使用,显示选择文件的名称和大小。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Test</title>
        <style>
        </style>
    </head>
    
    <body>
    
        <input type="file" id="Files" name="files[]" multiple />
        <div id="Lists"></div>
    
    <script>
        
        if (window.File && window.FileList && window.FileReader && window.Blob) {
            document.getElementById('Files').addEventListener('change', fileSelect, false);
        }
        else {
            document.write('您的浏览器不支持File API');
        }
    
        function fileSelect(e) {
            e = e || window.event;
            var files = e.target.files; // FileList 对象
            var output = [];
            for (var i = 0, f; f = files[i]; i++) {
                output.push('<li><strong>' + f.name + '</strong>(' + f.type + ') - ' + f.size + 'bytes</li>');
            }
            document.getElementById('Lists').innerHTML = '<ul>' + output.join('') + '</ul>';
        }
    
    </script>
    
    </body>
    
    </html>

    程序从input元素获取FileList对象,然后依次处理其中的File对象,显示File对象的名称、类型和大小。

    4)FileReader接口

    FileReader接口用于将File对象或Blob对象中的数据读取到内存中。

    1、属性

    FileReader接口的属性
    属性具体描述
    readyState

    返回当前的状态,可以是下面的值。

    EMPTY(0):FileReader对象已经构建,没有挂起的读操作,即没有调用与读有关的方法

    LOADING(1):正在执行读操作,读的过程中没有发生错误

    DONE(2):整个文件已经被读到内存中,或者读文件过程中发生错误,或者读操作被终止

    result读取的文件或Blob对象的数据
    errorDOMError对象,包含错误信息

    2、方法

    FileReader接口的方法
    方法具体描述
    readAsArrayBuffer(blob)异步地将blob数据读取到ArrayBuffer对象中
    readAsText(blob,encoding)以指定的编码格式读取blob数据,读取的result属性是一个字符串
    readAsDataURL(blob)将blob数据读取为编码过的数据URL(即在URL中包含数据)
    abort()终止读取数据

    FileReader接口定义了以上3个读取文件的方法。它们的执行步骤相似,只是读取数据的格式不同。

    下面以readAsArrayBuffer(blob)方法为例说明。调用readAsArrayBuffer(blob)方法的步骤如下。

    (1)如果readyState等于LOADING(即正在执行读操作),则会抛出InvalidStateError异常,并终止操作。

    (2)如果blob被关闭,也会抛出InvalidStateError异常,并终止操作。

    (3)如果在读取数据时出现错误,则会将readyState属性设置为DONE,并将result属性设置为null。

    (4)如果读取数据时没有出现错误,则会将readyState属性设置为LOADING。

    (5)触发一个loadstart事件。

    (6)返回readAsArrayBuffer()方法,并继续执行下面的步骤。

    (7)每50ms或每读取1字节,就触发一个progress事件。

    (8)在读取blob数据的过程中,客户端会将数据填充到一个ArrayBuffer对象中,并更新result属性。读取完成后,停止触发progress事件。

    (9)当blob数据被全部读取到内存中时,会将readyState属性设置为DONE。

    (10)终止readAsArrayBuffer(blob)方法。

    调用abort()方法的步骤如下。

    (1)如果readyState等于EMPTY或NONE,则会将result属性设置为null,并终止操作。

    (2)如果readyState等于LOADING,则会将其设置为NONE,并将result属性设置为null。

    (3)如果读取数据的任务队列中还有任务,则将其结束并移除。

    (4)终止读取操作。

    (5)触发一个abort事件。

    (6)触发一个loadend事件。

    FileReader接口的3种读取文件方法都有一个blob参数,它可以引用一个File对象、FileList对象或Blob对象。

    3、事件

    FileReader接口的事件
    事件对应的事件处理属性具体描述
    loadstartonloadstart开始读数据时触发
    progressonprogress当读取、编码blob数据时触发。每50ms或每读取1字节,就触发一次
    abortonabort当调用abort()方法终止读取数据时触发
    erroronerror当读取数据出现错误时触发
    loadonload当读取数据成功完成时触发
    loadendonloadend当读取数据完成时触发(无论成功或失败)

    演示FileReader接口的使用。使用readAsText()读取并显示选择的文本文件的内容。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Test</title>
        <style>
        </style>
    </head>
    
    <body>
    
        <input type="file" id="file" />
        <div id="result" name="result"></div>
    
    <script>
        
        if (window.File && window.FileList && window.FileReader && window.Blob) {
            document.getElementById('file').addEventListener('change', fileSelect, false);
        }
        else {
            document.write('您的浏览器不支持File API');
        }
    
        function fileSelect(e) {
            e = e || window.event;
            var files = e.target.files;
            var f = files[0];
            var reader = new FileReader();  // 创建FileReader对象用于读取文件
            reader.readAsText(f);   // 读取文本数据
            // 读取数据成功后的处理函数
            reader.onload = function(f) {
                document.getElementById('result').innerHTML = this.result;
            }
        }
    
    </script>
    
    </body>
    
    </html>

    程序从input元素获取FileList对象,然后处理其中的File对象,创建FileReader对象用于读取文件的文本数据,并显示在div元素result中。

    展开全文
  • 如果我们当前py文件需要导入上级目录文件夹下py文件报错:No Module Name 处理方法: 例如Code文件夹下的test1想导入文件夹TestDIR里的py文件 首先需要在TestDIR下创建__init__.py文件,里面可以为空,这样TestDIR...

    如果我们当前py文件需要导入上级目录文件夹下py文件报错:No Module Name

    处理方法:

    例如Code文件夹下的test1想导入文件夹TestDIR里的py文件
    在这里插入图片描述
    首先需要在TestDIR下创建__init__.py文件,里面可以为空,这样TestDIR便成了一个Python 包;然后再test1.py中加入:

    import sys
    sys.path.append('根目录路径')
    from TestDIR import file_utils
    

    即可导入相关py文件

    展开全文
  •  所有文件处理都是使用系统函数完成的。  是基于Linux/Unix系统为模型的,有的函数在windows操作系统中不好用。    文件系统处理的作用:  1. 所有的项目离不开文件处理  2. 可以用文件长时间保存数据 ...
    52_PHP的文件系统操作(一)文件的类型与属性PHP文件系统处理
      所有文件处理都是使用系统函数完成的。
      是基于Linux/Unix系统为模型的,有的函数在windows操作系统中不好用。
     
      文件系统处理的作用:
      1. 所有的项目离不开文件处理
      2. 可以用文件长时间保存数据
      3. 建立缓存, 服务器中文件操作


        文件处理
      1. 文件类型
      以Linux为模型的, 在Windows只能获取file, dir或unknow 三种类型
      在Linux/Unix下, block, char, dir, fifo, file, link, unknown和种型
      block :块设置文件,磁盘分区,软驱, cd-rom等
      char: 字符设备,I/O (输入输出中)以字符为单位的设备, 例如键盘,打印机等
      dir: 目录也是文件的一种/目录文件
      fifo: 信息管道,从一个程序传输到另一个进程
      file:普通的文件类型如文本文件,可执行文件
      link: 链接文件,相当于windows下的快捷方式
      unknown :未知
     
      filetype("目录或文件名")
     
      is_array();判断是不是数组
      is_int();判断是不是整型
      is_string();判断是不是字符串
      is_null;判断是不是空
      is_bool();判断是不是布尔型
     
    is_dir -- 判断给定文件名是否是一个目录
    is_executable -- 判断给定文件名是否可执行
    is_file -- 判断给定文件名是否为一个正常的文件
    is_link -- 判断给定文件名是否为一个符号连接
    is_readable -- 判断给定文件名是否可读
    is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的
    is_writable -- 判断给定的文件名是否可写
    is_writeable -- is_writable() 的别名
     
     
      2. 文件的属性
      file_exists();--文件是否存在
      filesize();--文件大小
      is_readable();--文件是否可读
      is_writeable();--文件是否可写
      filectime();--文件创建时间
      filemtime();--文件修改时间
      fileactime();--文件最后访问时间
      stat();--文件状态
     
      3. 和文件目录相关的函数
      4. 文件的操作(创建文件,删除文件,移动文件)
      5. 文件的打开与关闭(读文件中的内容, 向文件中写内容)
      6. 文件内部移动指针(读取文件内部部分内容的时候将指针移动到要读的内容)
      7. 文件的锁定一些机制处理
     
     
        目录的处理
      1. 目录的遍历
      2. 目录的创建
        3. 目录的删除
        4. 目录的复制
      5. 统计目录大小
     
     
        文件上传和下载
        1. 上传
        2. 下载
     
     
     


    1、 echo filetype("hello")."<br>";
    echo filetype("demo.txt")."<br>";


    if(is_writable("hello")){
    echo "这是一个目录";
    }else{
    echo "这是一个文件";
    }


















    2、  date_default_timezone_set("PRC");


    function getFilePro($fileName){
    if(!file_exists($fileName)){
    echo "文件或目录{$fileName} 不存在<br>";
    return;
    }else{
    echo "文件的类型".filetype($fileName)."<br>";
    }


    if(is_file($fileName)){
    echo "这是一个文件<br>";
    echo "文件的大小为".getFileSize(filesize($fileName))."<br>";
    }   //判断文件单位
       
    if(is_dir($fileName)){
    echo "这是一个目录<br>";
    }


    if(is_readable($fileName)){
    echo "这个文件可以读<br>";
    }
    if(is_writable($fileName)){
    echo "这个文件可以写<br>";
    }
    if(is_executable($fileName)){
    echo "这个文件可以执行<br>";
    }


    echo "文件的创建时间:".date("Y-m-d H:i:s",filectime($fileName))."<br>";    //年:月:日,时:分:秒
    echo "文件的修改时间:".date("Y-m-d H:i:s",filemtime($fileName))."<br>";
    echo "文件的最后访问时间:".date("Y-m-d H:i:s",fileatime($fileName))."<br>";


    }


    function getFileSize($size){   //转换尺寸单位
    $dw="Byte";


    if($size >= pow(2, 40)){   //2的40次方或者1024的4次方
    $size=round($size/pow(2, 40), 2);  //最后这个2是小数点保留两位
    $dw="TB";
    }else if($size >= pow(2, 30)){
    $size=round($size/pow(2, 30), 2);
    $dw="GB";
    }else if($size >= pow(2, 20)){
    $size=round($size/pow(2, 20), 2);
    $dw="MB";
    }else if($size >= pow(2, 10)){
    $size=round($size/pow(2, 10), 2);
    $dw="KB";
    }else {
    $dw="Bytes";  //字节
    }
    return $size.$dw;

    }


    getFilePro("demo.txt");
    getFilePro("hello");












    3、    date_default_timezone_set("PRC");


    echo '<pre>';    //原格式输出数组
    print_r(stat("demo.txt"));
    echo '</pre>';










    4、date_default_timezone_set("PRC");




    $cache=5;                   //缓存时间,5秒内是读取文件内容,5秒后是更新文件内容,可以写内容。从时间上可以看出文件多久没有被更新了
    $cachefile="cache.txt";      //缓存的文件






    if(file_exists($cachefile) && (time()-$cache) < filemtime($cachefile)) {  //用当前时间减去缓存时间,如果小于修改时间,那证明还在缓存的时间内在缓存中获取数据。如果大于修改时间重新生成缓存时间
    echo file_get_contents($cachefile); //如果在缓存的10秒内,就从缓存文件中获取数据

    }else{
    file_put_contents($cachefile, date("Y-m-d H:i:s", time()));  //否则重新生成缓存时间

    }








    (53)PHP文件处理(二)文件路径及操作和权限
    <?php
    /*  PHP文件系统处理
     * 所有文件处理都是使用系统函数完成的。
     * 是基于Linux/Unix系统为模型
     *
     *   文件系统处理的作用:
     *   1. 所有的项目离不开文件处理
     *   2. 可以用文件长时间保存数据
     *   3. 建立缓存, 服务器中文件操作
     *
     *   文件处理
     * 1. 文件类型
     * 以Linux为模型的, 在Windows只能获取file, dir或unknow 三种类型
     * 在Linux/Unix下, block, char, dir, fifo, file, link, 


    unknown和种型
     * block :块设置文件,磁盘分区,软驱, cd-rom等
     * char: 字符设备,I/O 以字符为单位, 键盘,打印机等
     * dir: 目录也是文件的一种
     * fifo: 
     * file:
     * link: 
     * unknown
     *
     * filetype("目录或文件名")
     *
     * is_array();
     * is_int();
     * is_string();
     * is_null;
     * is_bool();
     *
    is_dir -- 判断给定文件名是否是一个目录
    is_executable -- 判断给定文件名是否可执行
    is_file -- 判断给定文件名是否为一个正常的文件
    is_link -- 判断给定文件名是否为一个符号连接
    is_readable -- 判断给定文件名是否可读
    is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的
    is_writable -- 判断给定的文件名是否可写
    is_writeable -- is_writable() 的别名
     *
     *
     * 2. 文件的属性
     * file_exists();
     * filesize();
     * is_readable();
     * is_writeable();
     * filectime();
     * filemtime();
     * fileactime();
     * stat();
     *
     * 3. 和文件路径相关的函数
     *
     * 相对路径:相对于当前目录的上级和下级目录
     * .  当前目录
     * .. 上一级目录
     *
     * ./php/apache/index.php
     * php/apahce/index.php
     * login.php
     * ./login.php
     * ../images/tpl/logo.gif
     *
     *
     * 路径分隔符号
     * linux/Unix    "/"
     * windows       "\"
     *
     * DIRECTORY_SEPARATOR  为不同平台,在Windows \ Linux /
     *
     * 不管是什么操作系统PHP的目录分割符号都支技 / (Linux)
     *
     * 在PHP和Apache配置文件中如果需要指定目录,也使用/作为目


    录符号
     *
     * 绝对路径:
     * / 根路径
     *
     * /images/index.php
     *
     * 指的操作系统的根
     * 指的是存放网站的文档根目录
     *
     *                              分情况
     *
     *  如果是在服务器中执行(通过PHP文件处理函数执行)路径 则 “根”指的就是操作系统的根
     *  如果程序是下载的客户端,再访问服务器中的文件时,只有通过Apache访问,“根”也就指的是


    文档根目录
     *
     *从客户端程序访问服务器端的就得通过服务器以以下格式访问http://www.xsphp.com/logo.gif
     *
     *
     * basename(url)     //只要文件名
     * dirname(url)     //目录名
     * pathinfo(url)    //路径信息
     *
     *
     *
     *
     * 4. 文件的操作(创建文件,删除文件,移动文件)
            创建文件 touch("文件名")
     * 删除文件 unlink("文件路径");
     * 移动文件 为文件重新命名 rename("当前文件路径", “目录为文件路径”)
     * 复制文件 copy("当前", “目标”);
     *
     * 一定要有PHP执行这个文件权限, Apache, 一个用户
     *
     *
     * 和权限设计有关的函数
     *
     *
    ls -l  或 ll


    _rwxrwxrwx   777


    _ 类型 _文件  d 表示是目录  l  b   


    rwx 表这个文件的拥有者  r读 w写 x执行    
    rwx 表这个文件的拥有者所在的组  r读 w写 x执行
    rwx 其它用户对这个为文件的权限  r读 w写 x执行


    r 4
    w 2
    x 1 


    7 7 7  4+2+1  4+2+1 4+2+1
    rwx   rwx  rwx

    644
    4+2   4   4
    rw_  r__ r__
    754

    chmod u=rwx,g=rw,o=x  //用户读写执行权限、组读写、其他用户执行的权限
    chmod 777  demo.php    //可读可写可执行
    chmod 644  demo.html   //当前用户可读可写,其他用户只读不写


    chown  mysql demo.php   //把demo.php的拥有者改为mysql


    chgrp  apache demo.php  //把demo.php的拥有组改为apache
    chgrp -- 改变文件所属的组
    chmod -- 改变文件模式
    chown -- 改变文件的所有者


    filegroup -- 取得文件的组
    fileowner -- 取得文件的所有者




    // touch("./php.apahce"); //创建一个为文件


    // unlink("C:/AppServ/www/xsphp/apache.php");


    // rename("./test.txt", "d:/test2.txt");


    // copy("cache.txt", "./cache5.txt");




    chmod("/aaa/index.php", "755"); //将文件权限改为755


     * 5. 文件的打开与关闭(读文件中的内容, 向文件中写内容)
     * 6. 文件内部移动指针
     * 7. 文件的锁定一些机制处理
     *
     *
     *   目录的处理
     *   1. 目录的遍历
     *   2. 目录的创建
     *   3. 目录的删除
     *   4. 目录的复制
     * 5. 统计目录大小
     *
     *
     *   文件上传和下载
     *   1. 上传
     *   2. 下载
     *
     *
     */


    1、 $url1="./aaa/bbb/index.php";
    $url2="../www/yyy/login.rar";
    $url3="c:/appserv/www/demo.html";
    $url4="http://localhost/yyy/www.gif";


    echo basename($url1)."<br>";    //只要文件名的时候用这个函数,非常方便
    echo basename($url2)."<br>";
    echo basename($url3)."<br>";
    echo basename($url4)."<br>";


      


            index.php
            login.rar
            demo.html
            www.gif








     2、    $url1="./aaa/bbb/index.php";
    $url2="../www/yyy/login.rar";
    $url3="c:/appserv/www/demo.html";
    $url4="http://localhost/yyy/www.gif";


    echo dirname(dirname($url1))."<br>";
    echo dirname($url2)."<br>";
    echo dirname($url3)."<br>";
    echo dirname($url4)."<br>";




    3、 $url1="./aaa/bbb/index.php";
    $url2="../www/yyy/login.rar";
    $url3="c:/appserv/www/demo.class.html";
    $url4="http://localhost/yyy/www.gif";
    echo '<pre>';
    print_r($path=pathinfo($url3));
    echo '</pre>';


    echo $path["extension"];    //path的扩展名部分是html




































    展开全文
  •   程序在异常捕获中难免会遇到未经捕获的异常,因此要在最上级对未抓取异常进行处理,包括保存用户文件及输出Dmp文件,Dmp文件可以帮助开发人员快速定位异常所在具体工具可以利用VisualStudio或者Windbg工具来跟踪...
  • (九)boost库之文件处理filesystem

    千次阅读 2016-03-15 14:38:32
    filesystem库是一个可移植的文件系统操作库,它在底层做了大量的工作,使用POSIX标准表示文件系统的路径,使C++具有了类似脚本语言的功能,可以跨平台操作目录、文件,写出通用的脚本程序。 1.path的构造函数可以...
  • 程序运行过程中,往往需要将一些运算结果保存到文件,以便后面的数据分析和可视化处理。 在MFC中数据的输出代码如下: int k[num];//需要输出的数据 for (int i=0;i;i++) k[i]=i; CFile file_save("D:\\系数.txt...
  • python处理类xml文件遇到的坑

    千次阅读 2017-02-18 00:54:27
    由于对xml文件不熟,并且对python处理xml文件不熟,故这两个坑用了将近一天的时间来填,谨记说到填坑,要特备感谢一驻马店的老乡“驻马店bd”qq已备注。不是他的帮助,估计还要整好长时间。特此感谢,虽然他看不到。...
  • 公文处理流程

    千次阅读 2011-03-18 16:33:00
    OA核心业务了解 流程的运作是政府办公自动化的保障,所以对收发签业务流程的了解应该说是 掌握OA核心业务的关键。 一些关于政府办公自动化的专业术语: 收发签:收文、发文、签报 1.OA中的一些可用操作 会签、审核...
  • 微信小程序跳转到二级页面 toDetail: function() { // 不需要携带参数 wx.navigateTo({ url:'要跳转的页面路径,配置在app.json文件的pages中的路径' }) // 携带参数,直接在路径后添加即可,注意要有? wx....
  • preface: 最近的任务需要解析xml文件,毋庸置疑用lxml,普通的解析流程网上博客甚多w3cschool里的就足够了,不用再赘言。可是处理文件里面,明明有那个结点但xpath就是找不到,不知道为何,查找资料用print大法...
  • Java异常处理:给程序罩一层保险

    千次阅读 2019-01-11 08:31:46
    异常发生了,是任程序自生自灭,还是将错误输出给用户? Java为此提供的解决方案是——异常处理机制。
  • HTTP协议处理流程

    千次阅读 2015-11-30 13:50:20
    这篇文章来自HTTP协议 处理流程我们平时在浏览网页的时候都是使用浏览器,输入你要的网址后回车,就会显示出我们所想要的内容,看似这个简单的用户操作行为的背后,Web的工作原理是怎样的呢?到底隐藏了些什么呢?...
  • squid3.0工作原理及配置文件

    千次阅读 2013-07-19 09:43:11
    squid工作原理 一、SQUID缓存的存放方式: 是将缓存文件放入cache_dir 规定的目录中,采用了两级HASH路径。(Squid 把它叫object)。   1.1 磁盘工作方式 磁盘缓存的情况比较复杂, squid 有 ufs, aufs...
  • 近期正在做在Ubuntu环境下将C++程序封装成动态库文件和静态库文件,期间不知道掉了多少坑,在这里写下来以免忘记工作是将实现MTCNN的C++源代码封装成动态库文件和静态库文件,原先在github上找到了一个依据opencv和...
  • MapReduce详细的工作流程(MapReduce1)

    千次阅读 2015-07-02 21:10:46
    MapReduce详细的工作流程(MapReduce1)本文着重介绍MapReduce详细的工作流程,这些知识可以让你更深刻的理解Mapreduce,编写MapReduce项目。 MapReduce Job运行剖析如果一个Job还没提交的话,可以通过运行submit()...
  • 上一次我们在配置好Activiti的开发环境之后,进行了以下开发: 1.绘制流程图 2.编写流程引擎加载类 3.通过流程引擎获取...我们部署了流程,为的就是使用这个流程方式去处理我们的业务,就如同 之前例子中
  • //使用appdomain获取当前应用程序集的执行目录 string dir = AppDomain.CurrentDomain.BaseDirectory;...//使用path获取当前应用程序集的执行目录的上级上级目录 dir = Path.GetFullPath("../.."); ...
  • matlab文件与子文件操作

    千次阅读 2016-11-27 20:40:34
    下面就来简单说说matlab处理文件和子文件的一些相关操作。 在各种语言里面都有对文件流的操作,matlab也提供了一些文件操作API,这些API给用户带来了很大的便利。虽然matlab里面对于文件进行处理(比如说常见的load...
  • HTTP协议的处理流程

    千次阅读 2016-09-28 15:14:10
    HTTP协议 流程
  • Properties类,配置文件文件路径

    千次阅读 2020-04-24 15:40:45
    1 Properties配置文件说明 Properties类对应.properties文件文件内容是键值对,键值对...所以这个文件中的中文要特殊处理:如果这个配置文件中有中文就必须要进行转义,使用native2ascii.exe命令操作: native2as...
  • 三分钟明白 Activiti工作流 -- java运用

    万次阅读 多人点赞 2017-06-14 18:03:03
    采用工作流技术的公司的请假流程是这样的 员工使用账户登录系统——点击请假——上级登录系统点击允许 就这样,一个请假流程就结束了 有人会问,那上级不用向公司提交请假记录?公司不用将记录录入电脑...
  • 程序文件相关api总结

    千次阅读 2018-09-03 14:07:49
    保存文件到本地。注意:saveFile 会把临时文件移动,因此调用成功后传入的 tempFilePath 将不可用 OBJECT参数说明: 参数名 类型 必填 说明 count Number 否 最多可以选择的图片张数,默认9 sizeType String...
  • Node之文件流与文件路径操作

    千次阅读 2019-12-29 20:28:22
    流的基本概念 用途 使用异步方式 使用同步方式1 ...将文件完整写入缓存区 ...将文件部分读入缓存区 ...将数据完整写入文件 ...在一个应用程序中,流是一组有序的、有起点和终点的字节数据的传输手段。在应...
  • Python基础语法全体系 | 文件IO与常用文件操作模块

    千次阅读 多人点赞 2019-12-31 05:30:08
    文章目录使用pathlib操作目录使用os.path操作目录使用fnmatch处理文件名匹配打开文件文件打开模式 Python提供了非常丰富的I/O支持,它既提供了pathlib和os.path来操作各种路径,也提供了全局的open()函数来打开...
  • 售前工程师工作流程和职责

    千次阅读 2013-02-05 14:51:05
    [转帖]售前工程师工作流程和职责 售前工程师工作流程和职责 首先要纠正一个错误的观点:售前的技术要求不高。售前在用户看来是代表着一个公司的技术水平的市场技术人员,第一个定语是“市场”说明售前需要了解...
  • ls 命令与链接文件

    千次阅读 2018-10-02 23:30:16
    ls 命令是 list 单词的缩写。...在 linux 终端中我们主要面向文件操作,在文件的读入、处理、输出中完成工作任务。我们使用 linux 下提供的众多实用程序,通过不同程序的组合来高效的完成所需的操作。l...
  • Linux文件系统详解

    万次阅读 多人点赞 2019-05-29 16:07:53
    从操作系统的角度详解Linux文件系统层次、文件系统分类、文件系统的存储结构、不同存储介质的区别(RAM、ROM、Flash)、存储节点inode。本文参考: http://blog.chinaunix.net/uid-8698570-id-1763151.html ...
  • 售前工作职责和流程

    万次阅读 2012-06-04 16:12:17
    售前工作职责和流程 在 IT 界,成功的完成一个项目的需要销售人员、售前人员、项目实施人员(开发人员)、售后服务人员等密切协作。本文从售前技术支持人员的角度,对售前技术支持工作的过程进行了描述,根据作者...
  • python 文件、文件夹详细操作

    万次阅读 多人点赞 2019-01-10 21:07:04
    1、文件操作流程 2、文件打开模式 3、文件循环 4、文件的修改 5、flush方法 6、whit语句 7、其它操作 二、文件夹 / 1、提要 2、判断路径或文件 3、路径名、文件名分割 4、工作目录及创建文件夹操作 5、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,719
精华内容 14,687
关键字:

上级文件处理工作流程