国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP中dat文件讀寫操作實例詳解

2024-05-04 21:48:29
字體:
來源:轉載
供稿:網友

在php不不管讀取什么類型的文件多半是使用fopen函數,然后配合其它的函數再進行操作,下面我來介紹讀取dat數據文件的方法.

以下是一篇關于文件基本讀寫操作的文章,我曾經就是看了這篇文章后學會文件基本操作的,在這里發出來與大家共享,復制內容到剪貼板,代碼如下:

  1. $file_name = "data.dat"
  2. // 要讀取的文件的絕對路徑: homedata.dat 
  3.  
  4. $file_pointer = fopen($file_name"r"); 
  5. // 打開文件,"r" 是一種模式,或者說我們要進行的操作方法,詳見本文后面的介紹 
  6.  
  7. $file_read = fread($file_pointerfilesize($file_name)); 
  8. // 通過文件指針讀取文件內容 
  9.  
  10. fclose($file_pointer); 
  11. // 關閉文件 
  12.  
  13. print "讀取到的文件內容是: $file_read"
  14. // 顯示文件內容 
  15.  
  16. $file_name = "data.dat"
  17. // 絕對路徑: homedata.dat 
  18.  
  19. $file_pointer = fopen($file_name"w"); 
  20. // "w"是一種模式,詳見后面 
  21.  
  22. fwrite($file_pointer"what you wanna write"); 
  23. // 先把文件剪切為0字節大小, 然后寫入 
  24.  
  25. fclose($file_pointer); 
  26. // 結束 
  27.  
  28. print "數據成功寫入文件"
  29.  
  30. $file_name = "data.dat"
  31. // 絕對路徑: homedata.dat 
  32. //開源代碼Vevb.com 
  33. $file_pointer = fopen($file_name"a"); 
  34. // "w"模式 
  35.  
  36. fwrite($file_pointer"what you wanna append"); 
  37. // 不把文件剪切成0字節, 把數據追加到文件最后 
  38.  
  39. fclose($file_pointer); 
  40. // 結束 
  41.  
  42. print "數據成功追加到文件"

以上只是簡單介紹,下面我們要討論一些更深層的,有時候會發生多人寫入的情況,最常見是在流量較大的網站,會產生無用的數據寫入文件,例如,info.file文件內容如下:

  1. -> 
  2. |1|Mukul|15|Male|India (n) 
  3. |2|Linus|31|Male|Finland (n)現在兩個人同時注冊,引起文件破壞 
  4. -> 
  5. info.file -> 
  6. |1|Mukul|15|Male|India 
  7. |2|Linus|31|Male|Finland 
  8. |3|Rob|27|Male|USA|Bill|29|Male|USA 

上例中當PHP寫入Rob的信息到文件的時候,Bill正好也開始寫入,這時候正好需要寫入Rob紀錄的'n',引起文件破壞.

我們當然不希望發生這樣的情況,所以讓我們看看文件鎖定,復制內容到剪貼板,代碼如下:

  1. $file_name = "data.dat"
  2.  
  3. $file_pointer = fopen($file_name"r"); 
  4.  
  5. $lock = flock($file_pointer, LOCK_SH); 
  6. // 我使用4.0.2,所以用LOCK_SH,你可能需要直接寫成 1. 
  7.  
  8. if ($lock) { 
  9.  
  10. $file_read = fread($file_pointerfilesize($file_name)); 
  11. $lock = flock($file_pointer, LOCK_UN); 
  12. // 如果版本小于PHP4.0.2, 用 3 代替 LOCK_UN 
  13.  
  14.  
  15. fclose($file_pointer); 
  16.  
  17. print "文件內容為 $file_read"

上例中,如果兩個文件read.php和read2.php都要存取該文件,那么它們都可以讀取,但是當一個程序需要寫入的時候,它必須等待,直到讀操作完成,文件所釋放,復制內容到剪貼板,代碼如下:

  1. $file_name = "data.dat"
  2.  
  3. $file_pointer = fopen($file_name"w"); 
  4.  
  5. $lock = flock($file_pointer, LOCK_EX); 
  6. // 如果版本低于PHP4.0.2, 用 2 代替 LOCK_EX 
  7.  
  8. if ($lock) { 
  9.  
  10. fwrite($file_pointer"what u wanna write"); 
  11. flock($file_pointer, LOCK_UN); 
  12. // 如果版本低于PHP4.0.2, 用 3 代替 LOCK_UN 
  13.  
  14.  
  15. fclose($file_pointer); 
  16.  
  17. print "數據成功寫入文件"

對于追加數據與其他操作有點不同,就是FSEEK,確認文件指針在文件尾部總是一個好習慣,如果是在Windows系統下,上面的文件中文件名前面需要加上''.

FLOCK雜談:Flock()只在文件打開后才鎖定,在上列中文件打開后才獲得鎖定,現在文件的內容只是在當時的內容,而不反映出別的程序操作的結果,因此不只是在文件追加操作,就是對讀取操作也應該使用fseek.此處翻譯可能不是很確切,但我想意思到了.

關于模式:

'r' - 只讀方式打開, 文件指針置于文件頭

'r+' - 讀寫方式打開,文件指針置于文件頭

'w' - 只寫打開,文件指針置于文件頭,文件被剪切為0字節,如果文件不存在,嘗試建立文件

'w+' - 讀寫打開,文件指針置于文件頭,文件大小被剪切為0字節,如果文件不存在,嘗試建立文件

'a' - 只寫方式打開,文件指針置于文件尾,如果文件不存在,嘗試建立文件

'a+' - 讀寫打開,文件指針置于文件尾,如果文件不存在,嘗試建立文件

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 都匀市| 廉江市| 江永县| 保康县| 麻城市| 大厂| 伽师县| 商城县| 武功县| 天津市| 玛沁县| 白水县| 山东省| 西吉县| 巴塘县| 寿阳县| 久治县| 资兴市| 龙泉市| 普宁市| 临朐县| 沙田区| 许昌市| 郁南县| 左贡县| 和林格尔县| 陈巴尔虎旗| 康定县| 九台市| 西丰县| 扶绥县| 焦作市| 葫芦岛市| 邢台县| 礼泉县| 奉贤区| 齐河县| 拉萨市| 永宁县| 镇巴县| 平湖市|