文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>php--文件操作

php--文件操作

时间:2006-08-01  来源:cnscn2008


               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
                .bool   chmod(string filename,  int mode)     改变文件权限模式, mode应是八进制值
                                                                     
.string  basename(string  path, [,string  suffix])            返回路径中的文件名部分
给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。
如果文件名是以suffix结束的,那么这一部分也会被去掉
在Windows中, 斜线/和反斜线\都可以做目录分隔符。  在其他环境下是斜线 /
.bool  copy(string  source,  string dest)    //将文件拷到dest, 如果成功则返回true,  失败返回false
$file = 'a.txt';
$bak = "a.txt.bak";
if(!copy($file, $bak))
{
      echo "failed to copy $file... \n";
}
.string  dirname(string  path)     //返回路径中的目录部分
.bool  fclose(resource  handle)    //关闭一个已经打开的文件指针$fp, 成功返回true, 失败返回false
.bool  feof(resource  handle)    //测试文件指针是否到了文件结束的位置
如果文件指针到了EOF或者出错时则返回TRUE, 否则返回一个错误(包括socket超时), 其他情况则返回false
$fd = fopen("http://xml.a.com/forecastrss?p=AYXX0008&u=f", "r");
$xml = "";
if($fd)
{
     while(!feof($fd))
     {
           $xml .= fread($fd, 128);
     }
     fclose($fd);
}
               
               
               
               
               
                .bool  fflush(resource  handle)    //将缓冲内容输出到文件
本函数强制将所有缓冲的输出写入 $handle 文件句柄所指向的资源。 如果成功则返回true, 失败则返回false.  文件指针必须有效, 并且必须指向一个由fopen()或fsockopen()成功打开的文件
.string  fgetc( resource  handle)    //返回一个包含有一个字符的字符串,  该字符从handle指向的文件中得到。 碰到EOF则返回FALSE. 文件指针必须有效, 并且必须指向一个由fopen()或fsockopen()成功打开的文件
.string  fgets(int  handle [,  int length])   //从handle指向的文件中读取一行并返回长度最多为length-1字节的字符串。 碰到换行符(包括在返回值中)、EOF或者已经读取了length-1字节后停止(看先碰到哪一种情况)。 如果没有指定length,则默认为1K, 或者说是1024字节
出错返回 FALSE
$fd = fopen("a.txt", "r");
while(!feof($fd))
{
     $buffer = fgets($fd, 4096);
     echo $buffer;
}
fclose($fd);
.string  fgetss(resource  handle  [,  int length  [,  string  allowable_tags]])   //从文件指针中读取一行并过滤掉HTML和php标记。  可以用可选的第三个参数指定哪些标记不被去掉
.bool   file_exists(string  filename)    //检查文件或目录是否存在
如果由filename指定的文件或目录存在则返回TRUE, 否则返回FALSE
$f = 'a.txt';
if(file_exists($f))
{
   echo "Exists....";
}
.string  file_get_contents( string filename [,  bool  use_include_path  [,  resource  context  [,  int offset  [, int  maxlen]]]])     //将整个文件读入一个字符串
将在参数offset所指定的位置开始读取长度为maxlen的内容, 如果失败, 返回false
注意: 如果要打开有特殊字符的URL(比如说有空格), 就需要使用urlencode()进行URL编码
             本函数可安全用于二进制对象
$aContext = array(
        'http' => array(
              'proxy' => 'tcp://127.0.0.1:8080',
              'request_fulluri' => True
         )
);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents("http://www.php.net",  False,  $cxContext);
echo $sFile;
.int  file_put_contents(string  filename,  string  data [,  int flags [,  resource  context]])
和依次调用fopen(), fwrite()及fclose()一样
参数data可能是数组(但不能是多元数组), 这就相当于file_put_contents($filename,  join('', $array))
flags :  FILE_USE_INCLUDE_PATH, FILE_APPEND或LOCK_EX(获得一个独占锁定)
该函数将返回写入到文件内数据的字节数
.array  file(string  filename [,  int  use_include_path [, resource  context]])  //将文件做为一个数组返回, 数组中的每个单元都是文件中相应的一行, 包括换行符在内, 失败则返回FALSE
1)
$arrLines = file('a.txt');
foreach($arrLines  as $num=>$line)
{
    echo  "Line  # ${num} : ". htmlspecialchars($line). "
\n";
}
2)
$html = implode("", file('a.txt));
.int  filemtime(string  filename)         //返回文件上次被修改的UNIX时间, 出错时返回FALSE
echo  date("Y-m-d H:i:s",  filename("a.txt"));      //2006-07-16 12:34:56
.int  filesize(string   filename)   //返回文件大小的字节数,  如果出错则返回FALSE
echo  filesize('a.txt');
.string   filetype(string  filename)   //取得文件或目录的类型
返回文件的类型。 可能的值有 fio,  char,  dir,  block,  link,  file 和 unknown,  出错则返回FALSE
echo   filetype('/etc/passwd');   //file
echo   filetype("/etc");             //dir
.resource  fopen(string  filename,  string  mode [, bool  use_include_path [, resource  zcontext]])  //打开文件或URL
fopen() 将filename指定的名字资源绑定到一个流上。  如果filename是"scheme://..."的格式, 则被当成一个URL, PHP将搜索协议处理器(也被称为封装协议)来处理此模式。 如果该协议尚未注册封装协议, PHP将发出一条消息来帮助检查脚本中潜在的问题并将filename当成一个普通的文件名继续执行下去
如果PHP认为filename指定的是一个本地文件,将尝试在该文件上打开一个流。 该文件必须是PHP可以访问的, 因此需要确认文件访问权限。 如果激活了 安全模式  或者  open_basedir 则会应用进一步的限制
如果PHP认为filename指定的是一个已经注册的协议, 而该协议被注册为一个网络URL, PHP将检查确认allow_url_fopen已被激活。  如果关闭了, php将发出一个警告, 而fopen的调用失败
打开模式 :
   r           只读方式打开, 将文件指针放到文件头
   r+         读写方式打开, 将文件指针指向文件头
   w          写入方式打开, 将文件指针指向文件头并将文件大小改为零。 如果文件不存在则尝试创建之
   w+       读写方式打开,  将文件指针指向文件头并将大小改为0, 如果不存在则创建之
   a           写入方式打开,  将文件指针指向文件末尾, 如果文件不存在则创建之
   a+         读写方式打开,  将文件指针指向文件末尾, 如果文件不存在则创建之
   x           创建并以写入方式打开, 将文件指针指向文件头。 如果文件已存在, 则fopen()调用失败并返回FALSE,  并生成一条E_WARNING级别的错误信息。 如果文件不存在则尝试创建之。
   x+          创建并以读写入方式打开, 将文件指针指向文件头。 如果文件已存在, 则fopen()调用失败并返回FALSE,  并生成一条E_WARNING级别的错误信息。 如果文件不存在则尝试创建之。
$fp = fopen("a.txt", "r");
$fp = fopen("a.txt", "wb");
$fp = fopen("http://..",  "r");
$fp = fopen("ftp://../a.txt", "w");
      
.int  fpassthru(resource  handle)   //输出文件指针处的所有剩余数据, 将给定的文件指针从当前的位置读取到EOF并把结果写到输出缓冲区
如果发生错误, fpassthru() 返回 FALSE,  否则返回从handle读取并传递到输出的字符数目
如果已经向文件写入数据, 就必须调用rewind()来将文件指针指向文件头
如果既不修改文件也不在特定位置检索, 只想将文件的内容下载到输出缓冲区, 应使用readfile(),  这可以省去fopen()调用
鼓励在处理二进制文件时使用b标志, 即使系统并不需要, 这样可以使脚本的移植性更好
$name = './img/ok.png';
$fp = fopen($name,  'rb');

//发送适当的报头
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));
//发送图片 并终止脚本
fpassthru($fp);
exit;
.string  fread(int handle,  int length)   //读取文件(可安全用于二进制文件)
从文件指针handle读取最多length个字节,  该函数在读取完length个字节数, 或到达EOF的时候, 或(对于网络流)当一个包可用时就会停止读取文件, 看先遇到哪种情况
$file = "a.txt";
$handle = fopen($file, "r");
$contents = fread($handle,  filesize($filename));
fclose($handle);
在区分二进制文件和文本文件的系统(如Windows)上打开文件时, fopen()函数的mode参数要加上'b'
$file = "a.txt";
$handle = fopen($file, "rb");
$contents = fread($handle,  filesize($filename));
fclose($handle);
当从网络流或者管道读取时, 例如在读取从远程文件或popen() 以及 proc_open()的返回时读取会在一个包可用之后停止。 这意味着你应如下例所示将数据收集起来合并成大块
$file = "http://www.a.com/a.txt";
$handle = fopen($file, "rb");
$contents = "";
while(!feof($handle))
{
   $contents .= fread($handle, 8192);
}
fclose($handle);
如果只是想把一个文件的内容读入到一个字符串中, 用file_get_contents(),  它的性能比上面的代码好得多
.mixed  fscanf(resource  handle,  string  format [,  mixed &...])
本函数和sscanf()相似, 但它从与handle关联的文件中接受输入并根据指定的format(定义在sprintf()的文档中)来解释输入。 如果只给此函数传递了两个参数, 解析后的值会被做为数组返回。 否则,如果提供了可先参数, 些函数将返回被赋值的数目。 可先参数必须用引用传递
格式字符串中的任何空白会与输入流中的任何空白匹配。 这意味着甚至格式字符串中的制表符\t也会与输入流中的一个空格字符匹配
$handle = fopen("user.txt", "r");
while($userinfo = fscanf($handle,  "%s\t%s\t%s\n"))
{
    list($name,  $profession,  $countrycode) = $userinfo;
}
fclose($handle);
.int  fseek(resource  handle,  int  offset  [, int  whence])
在与handle关联的文件中设定文件指针位置。 新位置, 从文件头开始以字节数度量, 是以whence 指定的位置加上offset.  whence 的值定义为:
       SEEK_SET         设定位置等于offset字节 (默认值)
       SEEK_CUR          设定位置为当前位置加上offset
       SEEK_END           设定位置为文件尾加上offset  (要移动到文件尾之前的位置, 需要给offset传递一个负值)
  
成功则返回0,  否则返回 -1.    注意移动到EOF之后的位置不算错误
$fp = fopen("a.txt");
$data = fgets($fp, 4096);
fseek($fp, 0);
.int  ftell(resource  handle)
返回由handle指定的文件指针的位置, 也就是文件流中的偏移量
如果出错, 返回FALSE
$fp = fopen("/etc/passwd", "r");
$data = fgets($fp, 12);
echo  ftell($fp);  //11
fclose($fp);
.bool  ftruncate(resource  handle,  int size)
接受文件指针handle作为参数, 并将文件大小截取为size.   如果成功则返回 TRUE, 失败则返回FALSE
文件只会在append模式下改变, 在write模式下, 必须加上fseek()操作
.int  fwrite(resource  handle,  string  string [,  int length])
把string的内容写入 文件指针handle处, 如果指定了length, 当写入了length个字节或写完了string以后, 写入就会停止, 先看碰到哪种情况
成功: 返回写入的字符数
失败: 返回FALSE
注意: 如果给出了length参数, 则magic_quotes_runtime配置选项将被忽略, 而string中的斜线将不会被抽去
             在区分二进制文件和文本文件的系统上(如Windows)打开文件时, fopen()函数的mode参数要加上'b'
$filename = 'test.txt';
$somecontent = "abcdkdkerjlfdfodsfods\n";
if(is_writable($filename))
{
       if(!$handle = fopen($fillename, 'a'))
       {
              echo  "can not open file";
              exit;
        }
     
        if(fwrite($handle,  $somecontent) === FALSE)
        {
              echo  "can not write into file";
              exit;
         }
   
          echo  "write  success....";
          fclose($handle);     
}
else
{
       echo   "file can not write ...";
}
.is_dir()    is_executable()   is_file()   is_link()  is_readable()  is_uploaded_file()   is_writable()  is_writeable()
.bool  mkdir(string  pathname [,  int  mode])
尝试新建一个由pathname指定的目录
mode 用以0开头的八进制数字
成功:  返回TRUE
失败:  返回FALSE
mkdir("abc", 0700)
.bool  move_uplode_file(string  filename,  string  destination)
将上传的文件移动到新位置
本函数检查并确保由filename指定的文件是合法的上传文件(即通过PHP的HTTP POST上传机制所上传的)。 如果文件合法, 则将其移动为由destination指定的文件
如果filename不是合法的上传文件, 不会出现任何操作, move_uploaded_file()将返回FALSE
如果filename是合法的上传文件, 但出于某些原因无法移动,  不会出现任何操作, 将返回FALSE , 此外还会发出一条警告
这种检查显得格外重要, 如果上传的文件有可能造成对用户或本系统的其他用户显示内容的话。
注: move_uploaded_file()  对安全模式 和 open_basedir 都是敏感的。  不过, 限制只针对 destination 路径, 因为允许移动上传的文件名  filename 可能会与这些限制产生冲突。  move_uploaded_file() 仅作用于通过PHP上传的文件以确保这个操作的安全性,
         如果目标文件已经存在, 将会被覆盖
.array   parse_ini_file(string filename [,  bool  process_sections])
载入一个由filename指定的ini文件, 并将其中的设置作为一个联合数组返回。
如果将最后的process_sections参数设为TRUE,  将得到一个多维数组, 包括了配置文件中每一节的名称和设置。 默认值是FALSE
如果运行parse_ini_file()之前定义了常量做为ini的值, 将会被集成到结果中去, 只有ini的值会被求值
//abc.ini
[first_section]
one  =1
five = 5
animal = BIRD
[second_section]
path = /usr/local/bin
URL = "htp://www.a.com/~username"
//parse.php
define('BIRD',  'Dodo bird');
$ini_array = parse_ini_file("abc.ini");
Array
(
        [one] => 1
        [five] => 5
        [animal] => Dodo bird
        [URL] => htp://www.a.com/~username
)
.array  pathinfo(string  path [,  int options])
返回 一个联合数组,包含有path的信息,  包括以下的数组单元 arr['dirname']、arr['basename']、arr['extension']
$arr = pathinfo("/www/htdocs/abc.jpg");
echo  $arr['dirname']. "\n";           // /www/htdocs
echo  $arr['basename']. "\n";        //abc.jpg
echo  $arr['extension']. "\n";        //jpg
.int  readfile(string  filename [,  bool  use_include_path [, resource  context]])
输出一个文件
读入一个文件并写入到输出缓冲
成功: 返回从文件中读入的字节数
失败: 返回FALSE
.string   realpath(string   path)
返回规范化的绝对路径名
自动解决./  ../   ../.././  之类的符号, 其内不会再有 ../  ./ . 之类
echo  realpath("../../index.php");
.bool  rename(string  oldname,  string  newname [, resource  context])
尝试把oldname重命名为newname
如果成功则返回True,  失败则返回 FALSE
rename("/tmp/tmp_file.txt",  "/home/user/login/abc.txt");
类似于 copy("/tmp/tmp_file.txt",  "/home/user/login/abc.txt")
   
.bool  rewind( resource   handle)
将handle的文件位置指针设为文件流的开头
成功:  返回TRUE
失败:  返回FALSE
.bool  rmdir(string  dirname)
尝试删除dirname所指定的目录。  该目录必须是空的, 而且要有相应的权限。 如果成功则返回TRUE, 失败返回FALSE
rmdir("/root/tcmp");
.string  tempnam(string  dir,  string  prefix)
建立一个具有唯一文件名的文件

在指定目录中建立一个具有唯一文件名的文件,
如果该目录不存在, 则会在系统临时目录中生成一个文件
成功: 返回其文件名
失败: 返回FALSE
$tmpfname = tempname(“/tmp”,  "FOO");
$handle = fopen($tmpfname,  "w");
fwrite($handle, "xxxxxxxxx");
fclose($handle);
unlink($tmpfname);
.resource   tmpfile(void)
以读写(w+)模式建立一个具有唯一文件名的临时文件, 返回一个与fopen() 相似的文件句柄, 文件会在关闭后(用fclose())自动被删除, 或当脚本结束后
$temp = tmpfile();
fwrite($temp,  "xxxxxxxxxxx");
fseek($temp, 0);
echo  fread($temp,  1024);
fclose($temp);
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
                .bool  unlink(string  filename)
删除文件
成功: 返回TRUE
失败: 返回FALSE
unlink("/tmp/a.txt");


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载