Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für die gemeinsame Nutzung von PHP-Dateioperationen

Beispiel für die gemeinsame Nutzung von PHP-Dateioperationen

小云云
小云云Original
2018-03-15 11:31:551562Durchsuche


In diesem Artikel werden hauptsächlich PHP-Dateioperationsbeispiele vorgestellt, d. h. Aufzeichnungsprotokolle, Verzeichnisse, Dateidurchlauf, Hochladen, mehrere Methoden zum Erhalten von Dateierweiterungen, Dateireferenzmethoden und Referenzfunktionen Unterschiede.

1.   文件建立:fopen()
$file = fopen("test.txt","r");

"r"

"r"

只读方式打开,将文件指针指向文件头。

"r+"

读写方式打开,将文件指针指向文件头。

"w"

写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

"w+"

读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

"a"

写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

"a+"

读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

Im schreibgeschützten Modus öffnen, wobei der Dateizeiger auf den Dateikopf zeigt.

"r+"

Öffnen Sie im Lese-/Schreibmodus und zeigen Sie mit dem Dateizeiger auf den Dateikopf.

"w"

Öffnen Sie im Schreibmodus, zeigen Sie mit dem Dateizeiger auf den Dateikopf und kürzen Sie die Dateigröße auf Null. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.

"w+"

Öffnen Sie im Lese-/Schreibmodus, zeigen Sie mit dem Dateizeiger auf den Dateiheader und kürzen Sie die Dateigröße auf Null. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.

"a"

Öffnen Sie im Schreibmodus und zeigen Sie mit dem Dateizeiger auf das Ende der Datei. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.

"a+"

Öffnen Sie im Lese-/Schreibmodus und zeigen Sie mit dem Dateizeiger auf das Ende der Datei. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.

2.   文件打开关闭:fopen(),fclose()
3.   文件末尾检查:feof()
函数检测是否已到达文件末尾.
4.   文件读取:fread(),file(), file_get_contents(), fgetc(),fgets()
1.  fread(file,length)  
从文件指针 file 读取最多 length 个字节,length(必须)
2.  file_get_contents(file)
将文件的内容读入到一个字符串中的首选方法
3.  file(file)
把整个文件读入一个数组中, 数组中的每个单元都是文件中相应的一行,包括换行符在内。
4.  fgetc(file)
从文件指针中读取一个字符
5.  fgets(file,length)
从文件指针中读取一行, 碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(要看先碰到那一种情况)。
5. 文件指针:
        fseek(file,offset,whence)
    把文件指针从当前位置向前或向后移动到新的位置,新位置从文件头开始以字节数度量。

whence可选。可能的值:

SEEK_SET - 设定位置等于 offset 字节。默认。

SEEK_CUR - 设定位置为当前位置加上 offset。

SEEK_END - 设定位置为文件末尾加上 offset (要移动到文件尾之前的位置,offset 必须是一个负值)。     fseek($fp,-2, SEEK_END);//移动指针到文件末尾

        ftell()    返回文件指针的当前位置。
        rewind()   移动文件指针到文件的开头。
另:php读取超大文件的方法
使用PHP的 fseek 来进行文件操作
这种方式是最为普遍的方式,它不需要将文件的内容全部读入内容,而是直接通过指针来操作,所以效率是相当高效的。

<?php
$fp = fopen($file, "r");
$pos = 0;
$t = " ";
$data = "";
while (!feof($fp)) {
    while ($t != "\n") {
        fseek($fp, $pos);
        $t = fgetc($fp);
        $pos ++;
    }
    $t = " ";
    $data .= fgets($fp);
}
fclose ($fp);
echo $data
?>

6.  获取文件扩展名:
1.  substr(strrchr($filename, '.'), 1);
2.  substr($filename, strrpos($filename, '.')+1);
3.  end(explode('.', $filename));
4.  pathinfo($filename, PATHINFO_EXTENSION); (PHP Filesystem 函数)
7.  目录与文件遍历:

function traverse($path){
  $current_dir = opendir($path);    //opendir()返回一个目录句柄,失败返回false
  while(($file = readdir($current_dir)) !==false) {//readdir()返回打开目录句柄中的一个条目
      $sub_dir = $path .DIRECTORY_SEPARATOR(‘/’) . $file;    //构建子目录路径
if($file == &#39;.&#39; || $file== &#39;..&#39;) {
          continue;
      } else if(is_dir($sub_dir)) {    //如果是目录,进行递归
          echo &#39;Directory &#39; . $file .&#39;:<br>&#39;;
          traverse($sub_dir);
      } else {    //如果是文件,直接输出
          echo &#39;File in Directory &#39; . $path .&#39;: &#39; . $file . &#39;<br>&#39;;
      }}
closedir($current_dir); }//记得打开后要关闭目录句柄哦
 <br>

8.  文件锁定
flock(file,lock,block)

                                       函数锁定或释放文件。若成功,则返回true。若失败,则返回 false。

Lock 参数可以是以下值之一:

·        要取得共享锁定(读取的程序),将 lock 设为LOCK_SH  (share)

·        要取得独占锁定(写入的程序),将 lock 设为LOCK_EX  (exclusive)

·        要释放锁定(无论共享或独占),将 lock 设为 LOCK_UN

·        如果不希望 flock() 在锁定时堵塞,则给lock 加上LOCK_NB

block可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。

<?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);
?>
共享锁与排他锁的区别:

1.共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。

排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。

2.共享锁下其它用户可以并发读取,查询数据。但不能修改,增加,删除数据。资源共享.[1] 

相关推荐:

PHP文件操作方法总结 

关于php文件操作的详细介绍

php文件操作函数集

Das obige ist der detaillierte Inhalt vonBeispiel für die gemeinsame Nutzung von PHP-Dateioperationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn