php 文件操作

1 写入文件
@$fp=fopen("$DOCUMENT_ROOT/order.txt", "ab");
if(!$fp){
echo "open file error" ;

exit;
}
$outputstring="date:"." \t tire:".$tire." \t oil:".$oil." \t spark:".$sparkqty." \n ";
fwrite($fp, $outputstring,strlen($outputstring));
fclose($fp);

相关函数语法:
fopen(filename,mode,include_path,context) 打开文件或者 URL。
filename: 必需。规定要打开的文件或 URL。
module:必需。规定要求到该文件/流的访问类型
include_path:可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。
context:可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

fwrite(file,string,length)写入文件(可安全用于二进制文件)
file:必须.打开的文件($fp)
string:必需。规定要写入文件的字符串。
ftp:可选。规定要写入的最大字节数。
注意:如果需要换行的话,需使用"\n"来表示,在'\n'会解释成字符串

fclose($fp):关闭文件

2读取文件
@$fp=fopen("$DOCUMENT_ROOT/order.txt", "rb");

if(!$fp){
echo "open file error" ;

exit;
}
while (!feof($fp)){
$order=fgets($fp,99);
echo $order."<br/>";

}

相关函数语法:
feof(file) 数检测是否已到达文件末尾
   file:必需。规定要检查的打开文件。

fgets(file,length) 函数从文件指针中读取一行
   file:必需。规定要读取的文件。
   length:可选。规定要读取的字节数。默认是 1024 字节。
说明

从 file 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(要看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。
若失败,则返回 false。

相关读取文件的函数:
fgetss(file,length,tags)//从打开的文件中读取一行并过滤掉 HTML 和 PHP 标记
  file:必需。规定要读取的文件。
  length:可选。规定要读取的字节数。默认是 1024 字节。该参数在 PHP 5 之前是必需的
  tags: 可选。规定不会被删除的标签。
示例:
  $file = fopen("$DOCUMENT_ROOT/index.html","r");
  echo fgetss($file,1024,"<h1>");
  fclose($file);
  文件内容:<html><body><h1>It works!</h1></body></html>
  输出的内容:<h1>It works!</h1>

fgetcsv(file,length,separator,enclosure)//从文件指针中读入一行并解析 CSV 字段。
  file:必需。规定要检查的文件。
  length:可选。规定行的最大长度。必须大于 CVS 文件内最长的一行。在 PHP 5 中该参数是可选的。在 PHP 5 之前是必需的。如果忽略(在 PHP 5.0.4 以后的版本中设为 0)该参数的话,那么长度就没有限制,不过可能会影响执行效率。
  separator: 可选。设置字段分界符(只允许一个字符),默认值为逗号。
  enclosure:可选。设置字段环绕符(只允许一个字符),默认值为双引号。该参数是在 PHP 4.3.0 中添加的。
  示例:
   <?php

$file = fopen("contacts.csv","r");

while(! feof($file))
  {
  print_r(fgetcsv($file));
  }

fclose($file);

?>
contacts.csv文件:
  George, John, Thomas, USA
  James, Adrew, Martin, USA
输出内容:
Array
(
[0] => George
[1] => John
[2] => Thomas
[3] => USA

Array
(
[0] => James
[1] => Adrew
[2] => Martin
[3] => USA
)

读取整个文件相关文件
readfile(filename,include_path,context)//输出一个文件。
file: 必需。规定要读取的文件。
include_path:可选。如果也想在 include_path 中搜索文件,可以使用该参数并将其设为 true。
context:可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。
<?php
echo readfile("$DOCUMENT_ROOT/order.txt");
?>

  fpassthru(file)输出文件指针处的所有剩余数据。该函数将给定的文件指针从当前的位置读取到 EOF,并把结果写到输出缓冲区。
   file:必需。规定要读取的打开文件或资源。
注释:当在 Windows 系统中将 fpassthru() 用于二进制文件时,要确保在用 fopen() 打开文件时在 mode 中附加了 b 来将文件以二进制方式打开。鼓励在处理二进制文件时使用 b 标志,即使系统并不需要,这样可以使脚本的移植性更好
示例:
<?php
$file = fopen("$DOCUMENT_ROOT/order.txt","r");
// 读取第一行
fgets($file);
// 把文件的其余部分发送到输出缓存
echo fpassthru($file);
fclose($file);
?>

file(path,include_path,context)// 函数把整个文件读入一个数组中。
path: 必需。规定要读取的文件。
include_path:可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。
context:可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 null,则忽略。

<?php
echo "<br/>";
print_r(file("$DOCUMENT_ROOT/order.txt"));
?>
//显示的内容
Array ( [0] => date: tire:2 oil:2 spark:2 [1] => date: tire:2 oil:2 spark:2 [2] => )

fgetc(file)//从文件指针中读取一个字符。
  file:必需。规定要检查的文件。
示例
  <?php
  $file = fopen("test.txt","r");
while (! feof ($file))
{
  echo fgetc($file);
}

  fclose($file);
  ?>
 
  fread(file,length)//读取文件(可安全用于二进制文件)
  file:必需。规定要读取打开文件。
  length:必需。规定要读取的最大字节数。

提示:如果只是想将一个文件的内容读入到一个字符串中,请使用 file_get_contents(),它的性能比 fread() 好得多。

示例:
  <?php
$file = fopen("test.txt","r");
fread($file,"10");
fclose($file);
?>
//从文件中读取 10 个字节

其他的文件操作

file_exists(path)//检查文件或目录是否存在。如果指定的文件或目录存在则返回 true,否则返回 false。
语法
filesize(filename)//函数返回指定文件的大小。
若成功,则返回文件大小的字节数。若失败,则返回 false 并生成一条 E_WARNING 级的错误。
unlink(filename,context)//函数删除文件。若成功,则返回 true,失败则返回 false。
filename:必需。规定要删除的文件。
context:可选。规定文件句柄的环境。Context 是可修改流的行为的一套选项。
rewind(file)将文件指针的位置倒回文件的开头。若成功,则返回 true。若失败,则返回 false。
fseek(file,offset,whence)//在打开的文件中定位。该函数把文件指针从当前位置向前或向后移动到新的位置,新位置从文件头开始以字节数度量。成功则返回 0;否则返回 -1。注意,移动到 EOF 之后的位置不会产生错误。
file:必需。规定要在其中定位的文件。
offset:必需。规定新的位置(从文件头开始以字节数度量)。
whence:可选。可能的值:
      •SEEK_SET - 设定位置等于 offset 字节。默认。
      •SEEK_CUR - 设定位置为当前位置加上 offset。
      •SEEK_END - 设定位置为文件末尾加上 offset (要移动到文件尾之前的位置,offset 必须是一个负值)。
示例:
   <?php
  $file = fopen("test.txt","r");
  // 读取第一行
  fgets($file);
  // 倒回文件的开头
  fseek($file,0);
  ?>
ftell(file)//在打开文件中的当前位置。该函数返回文件指针的当前位置。若失败,则返回 false。
flock(file,lock,block)//函数锁定或释放文件。若成功,则返回 true。若失败,则返回 false
  file:必需。规定要锁定或释放的已打开的文件。
  lock:必需。规定要使用哪种锁定类型。
  block:可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。

lock 参数可以是以下值之一:
•要取得共享锁定(读取的程序),将 lock 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。
•要取得独占锁定(写入的程序),将 lock 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)。
•要释放锁定(无论共享或独占),将 lock 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3)。
•如果不希望 flock() 在锁定时堵塞,则给 lock 加上 LOCK_NB(PHP 4.0.1 以前的版本中设置为 4)。

示例:
<?php

$file = fopen("test.txt","w+");

// 排它性的锁定
if (flock($file,LOCK_EX))
  {
  fwrite($file,"Write something");
  // release lock
  flock($file,LOCK_UN);
  }
else
  {
  echo "Error locking file!";
  }

fclose($file);
?>








  


  







你可能感兴趣的:(PHP,读取文件,写入文件)