/ / PHP. การทำงานกับไฟล์และไดเร็กทอรี

PHP ทำงานกับไฟล์และไดเรกทอรี

ฐานข้อมูล MySQL และ Access มีมากขึ้นเรื่อย ๆสื่อเก็บข้อมูลสาธารณะ แต่ในช่วงต้นทศวรรษ 1990 เป็นที่นิยมในการทำงานกับไฟล์ใน PHP โดยบันทึกระเบียนในไฟล์ข้อความที่จัดรูปแบบในรูปแบบ CSV โดยคั่นด้วยบรรทัดใหม่

หลักการพื้นฐานของการทำงาน

ฐานข้อมูลมีความสะดวก แต่นักพัฒนาทุกคนควรอย่างน้อยต้องมีความรู้พื้นฐานเกี่ยวกับวิธีการอ่านและเขียนไฟล์ หลายคนอาจคิดเกี่ยวกับคำถามที่ว่า“ ทำไมฉันต้องรู้เรื่องนี้? ถ้าฉันใช้ไฟล์ไฟล์เหล่านี้จะถูกเขียนด้วย XML และฉันก็แค่ใช้ตัวแยกวิเคราะห์ "

การเรียนรู้ php

ดังนั้นนี่คือสาเหตุบางประการที่คุณอาจต้องใช้ไฟล์:

  1. ในการย้ายข้อมูลไบนารี (เช่นไฟล์รูปภาพ) ไปยังฐานข้อมูล BLOB (Binary Large Object)
  2. นำเข้าข้อมูล (เช่นที่อยู่อีเมล) ที่ส่งออกจากฐานข้อมูลหรือแอปพลิเคชันเดิม
  3. เพื่อส่งออกข้อมูลจากฐานข้อมูลไปยังไฟล์ข้อความสำหรับการประมวลผลแบบออฟไลน์

การอ่านไฟล์และการเขียนเป็นการดำเนินการขั้นพื้นฐานหากคุณต้องการอ่านเอกสารก่อนอื่นคุณต้องเปิดเอกสารนั้น หลังจากนั้นคุณควรอ่านเนื้อหาให้มากที่สุดจากนั้นปิดไฟล์ ในการเขียนข้อมูลลงในเอกสารก่อนอื่นคุณต้องเปิด (หรืออาจสร้างหากยังไม่ได้สร้าง) หลังจากนั้นให้เขียนข้อมูลที่จำเป็นและปิดเมื่อดำเนินการเสร็จสิ้น

นอกจากนี้ยังสะดวกในการใช้ฟังก์ชันในตัวที่เปิดและปิดโดยอัตโนมัติ มีอยู่ใน PHP5 และคุณควรทำความคุ้นเคยกับแอตทริบิวต์ของไฟล์นั่นคือคุณสมบัติของมัน

พวกเขาสามารถบอกได้ว่า:

  • เกี่ยวกับขนาด
  • ให้ข้อมูลว่าเขาได้รับการติดต่อครั้งสุดท้ายเมื่อใด
  • บอกเกี่ยวกับเจ้าของ ฯลฯ

ที่ดีที่สุดคือเรียนรู้คุณลักษณะพื้นฐานทั้งหมดสำหรับการทำงานกับไฟล์ใน PHP สิ่งนี้จะช่วยอำนวยความสะดวกในการทำงานเป็นอย่างมาก

ประวัติไฟล์

คุณอาจต้องทราบว่าไฟล์ถูกแก้ไขครั้งล่าสุดเมื่อใด ในกรณีนี้ฟังก์ชันต่อไปนี้จะช่วย: fileatime (), filemtime () และ filectime ()

การเขียนโปรแกรม php
<?php $ formatDate = "D d M Y g: i A"; $ timeA = fileatime (ไฟล์ $); $ timeM = filemtime (ไฟล์ $); $ timeC = filectime (ไฟล์ $);  echo $ ไฟล์ "ได้รับการดู" วันที่ ($ formatDate, $ timeA) ". <br>"; echo $ ไฟล์ "มีการเปลี่ยนแปลง i-node ล่าสุด" วันที่ ($ formatDate, $ timeM) ". <br>"; echo $ ไฟล์ "มันเปลี่ยนไป". วันที่ ($ formatDate, $ timeC) ".";

นี่คือรหัสที่ดึงการประทับเวลาการเข้าถึงล่าสุดและแสดง:

  • C: Windowsfile.ini ถูกเปิดดูเมื่อ 19 ก.ย. 2018 16:34 น.
  • C: Windowsfile.ini ถูกแก้ไขเมื่อศุกร์ 8 ต.ค. 2018 02:03 น.
  • C: Windowsfil.ini แก้ไขเมื่ออังคาร 16 ธ.ค. 2560 04:34 น.

ฟังก์ชัน filectime () แสดงเวลาเปลี่ยนแปลงของข้อมูลต่างๆที่เกี่ยวข้องกับไฟล์ (ตัวอย่างเช่นสิทธิ์การเข้าถึง) และ filemtime () แสดงการเปลี่ยนแปลงของไฟล์เอง

ฟังก์ชัน date () ถูกใช้เพื่อจัดรูปแบบการประทับเวลา Unix ที่ส่งคืนโดยฟังก์ชัน file * time ()

ไฟล์หรือไม่?

หากต้องการทราบว่า PHP ทำงานกับไฟล์ได้จริงหรือไม่คุณสามารถใช้ฟังก์ชัน is_file () หรือฟังก์ชัน is_dir () เพื่อตรวจสอบว่าเป็นไดเร็กทอรีหรือไม่

<? php echo $ ไฟล์ (is_file ($ file)? "": "not") "ไฟล์. <br>"; echo $ ไฟล์ (is_dir ($ file)? "": "not") "ไดเร็กทอรี";

ตัวอย่างรหัสเอาต์พุต:

  • C: ไฟล์ Windowsfile.ini
  • C: Windowsfile.ini ไม่ใช่ไดเร็กทอรี

ดังนั้นคุณสามารถหลีกเลี่ยงข้อผิดพลาดและไม่เปิด "ไม่ใช่ไฟล์" โดยประมาท ใน PHP การทำงานกับไฟล์และไดเร็กทอรีจะคล้ายกัน

สิทธิ์ของไฟล์

ก่อนที่จะทำงานกับไฟล์คุณสามารถตรวจสอบว่าไฟล์นั้นอ่านได้หรือเขียนได้ ในการดำเนินการนี้คุณต้องใช้ฟังก์ชัน is_writable () และ is_readable ()

<? php echo $ ไฟล์ (is_readable ($ file)? "": "not") "อ่าน. <br>"; echo $ ไฟล์ (is_writable ($ file)? "": "not") "กำลังเขียน";

ฟังก์ชันเหล่านี้ส่งคืนค่าบูลีนและอธิบายว่าสามารถดำเนินการกับไฟล์ได้หรือไม่

รหัสจะพิมพ์ค่าต่อไปนี้ไปที่หน้าจอ:

  • C: กำลังอ่าน Windowsfile.ini
  • C: Windowsfile.ini ไม่ถูกเขียน

เมื่อใช้ตัวดำเนินการ ternary คุณสามารถระบุได้ว่าไฟล์พร้อมใช้งานหรือไม่

ขนาดไฟล์

หากต้องการทราบขนาดของไฟล์ให้ใช้ฟังก์ชัน filesize () จะแสดงเป็นไบต์

<? php $ file = "C: Windowsfile.ini"; $ size = filesize (ไฟล์ $); echo $ ไฟล์ "มีขนาด". ขนาด $. "ไบต์";
การทำงานกับ php

ฟังก์ชั่นจะแสดงสิ่งต่อไปนี้:

  • C: Windowsfile.ini มีขนาด 510 ไบต์

การใช้ไฟล์บนระบบ Windows ที่นี่เน้นความแตกต่างเล็กน้อย แบ็กสแลชมีความหมายพิเศษเป็นอักขระหลบหนี คุณจะต้องหลีกเลี่ยงปัญหานี้โดยเพิ่มแบ็กสแลชอื่น

หากยังไม่ได้สร้างไฟล์ฟังก์ชัน filesize () จะระบุว่า False และเกิดข้อผิดพลาด ดังนั้นก่อนอื่นไฟล์จะถูกตรวจสอบว่ามีอยู่ของคำสั่ง file_exists () ที่ต้องการหรือไม่

<? php $ file = "C: Windowsfile.ini"; if (file_exists ($ file)) {$ size = filesize ($ file); echo $ ไฟล์ "มีขนาด". ขนาด $. "byte.";} else {echo $ file. " ไม่พบไฟล์.";}

การตรวจสอบ file_exists () ควรรวมไว้เกือบตลอดเวลาเพื่อความปลอดภัย

การอ่านไฟล์

ส่วนก่อนหน้านี้แสดงให้เห็นว่าคุณสามารถทำได้มากแค่ไหนเรียนรู้เกี่ยวกับไฟล์ที่คุณใช้งานก่อนที่จะอ่านหรือเขียน ตอนนี้คุณสามารถแยกวิเคราะห์ด้วยวิธีการอ่านเนื้อหาของไฟล์

ทำงานใน php กับไฟล์ ini

ฟังก์ชั่นสำหรับการทำงานกับไฟล์ PHP ทำให้งานง่ายขึ้นในกรณีนี้คุณต้องมี file_get_contents () มันจะอ่านเนื้อหาทั้งหมดของไฟล์ในตัวแปรโดยไม่ต้องเปิดหรือปิดไฟล์เอง วิธีนี้สะดวกเมื่อปริมาณการบันทึกมีขนาดค่อนข้างเล็กเนื่องจาก PHP ไม่ได้มีเหตุผลเสมอไปที่จะอ่านข้อมูล 1 GB ลงในที่เก็บถาวรได้ทันที การทำงานกับไฟล์ ".ini" และฟังก์ชัน file_get_contents () แสดงอยู่ด้านล่าง

<? php $ file = "c: windowsfile.ini"; $ file1 = file_get_contents (ไฟล์ $); ก้อง $ file1;

สำหรับไฟล์ขนาดใหญ่หรือขึ้นอยู่กับความต้องการของสคริปต์ของคุณอาจเป็นการดีกว่าที่จะจัดการกับรายละเอียดด้วยตัวคุณเอง เนื่องจากเมื่อเปิดไฟล์แล้วคุณสามารถค้นหาบันทึกเฉพาะในนั้นและอ่านข้อมูลได้มากเท่าที่คุณต้องการ ฟังก์ชัน fopen () ใช้เพื่อเปิดไฟล์

<? php $ file = "c: windowsfile.ini"; $ file1 = fopen (ไฟล์ $, "r");

ฟังก์ชัน fopen () ต้องการสองอาร์กิวเมนต์:

  • ไฟล์ที่จะเปิด
  • โหมดที่ใช้ในกรณีนี้คือ "r" สำหรับการอ่าน

ฟังก์ชันจะส่งคืนหมายเลขอ้างอิงหรือสตรีมไปยังไฟล์ซึ่งเก็บไว้ในตัวแปร $ file1 ต้องใช้ในคำสั่งที่ตามมาทั้งหมดเมื่อทำงานกับไฟล์

ค่าโหมดที่พบบ่อยที่สุด
โหมด ความคุ้มค่า ตำแหน่งเคอร์เซอร์ ถ้าไม่มีไฟล์?
อ่านเท่านั้น จุดเริ่มต้นของไฟล์ จะให้ข้อผิดพลาด
บันทึกเท่านั้น จุดเริ่มต้นของไฟล์ จะสร้างไฟล์
และ บันทึกเท่านั้น ท้ายไฟล์ จะสร้างไฟล์

ฟังก์ชัน fgets () สามารถใช้เพื่ออ่านจากไฟล์ที่เปิดทีละบรรทัด

<? php $ file = "c: windowsfile.ini"; $ file1 = fopen (ไฟล์ $, "r"); ทำ {echo fgets ($ file1) "<br>";} ในขณะที่ (! feof ($ file1)); fclose ($ file1);

การใช้ do-while-loop เป็นสิ่งที่ดีทางเลือกที่จะทราบล่วงหน้าว่าไฟล์มีกี่บรรทัด ฟังก์ชัน feof () ตรวจสอบเพื่อดูว่าไฟล์เสร็จสมบูรณ์หรือไม่และการวนซ้ำจะดำเนินต่อไปจนกว่าจะถึงจุดสิ้นสุดของเงื่อนไขไฟล์ หลังจากอ่านเสร็จฟังก์ชั่น fclose () จะใช้เพื่อปิดเอกสาร

การบันทึกไฟล์

สองโหมดที่ใช้กันทั่วไปเมื่อเขียนลงไฟล์ด้วยโดยใช้ฟังก์ชัน fwrite (): "w" และ "a" "W" หมายความว่าคุณต้องเขียนลงในเอกสาร แต่ก่อนอื่นจะลบเนื้อหา "a" - เพิ่มข้อมูลใหม่ให้กับสิ่งที่มีอยู่แล้วในไฟล์ อย่าลืมใช้ตัวเลือกที่ถูกต้อง

การทำงานกับไฟล์ php และ ini

ตัวอย่างต่อไปนี้จะใช้โหมด "a" สำหรับการบันทึก

<? php $ myFile = "files.txt"; $ file1 = fopen ($ myFile, "a"); $ output = "กล้วย" PHP_EOL; fwrite ($ file1, $ output); $ output = "จีน" PHP_EOL; fwrite ($ file1, $ เอาท์พุท); fclose ($ file1);

ขั้นแรกชื่อไฟล์จะถูกกำหนดให้กับตัวแปรจากนั้นจะเปิดในโหมด "a" เพื่อเพิ่ม ข้อมูลที่จะเขียนถูกกำหนดให้กับตัวแปร $ output และ fwrite () และข้อมูลจะถูกต่อท้ายไฟล์ ทำซ้ำขั้นตอนนี้เพื่อเพิ่มบรรทัดอื่นจากนั้นเอกสารจะปิดโดยใช้ fclose ()

PHP_EOL ค่าคงที่ที่กำหนดไว้ล่วงหน้าจะเพิ่มอักขระขึ้นบรรทัดใหม่เฉพาะสำหรับแพลตฟอร์มที่ PHP ทำงานด้วยไฟล์ข้อความ

เนื้อหาของไฟล์หลังจากรันโค้ดด้านบนควรมีลักษณะดังนี้:

  • กล้วย;
  • ประเทศจีน

file_put_contents () ฟังก์ชั่นยังสามารถเขียนลงไฟล์ ต้องใช้ชื่อไฟล์ข้อมูลที่จะเขียนและค่าคงที่ FILE_APPEND หากต้องการเพิ่มข้อมูล (จะเขียนทับเนื้อหาไฟล์เริ่มต้น)

นี่คือตัวอย่างเดียวกับด้านบน แต่คราวนี้ใช้ file_put_contents ()

<? php $ myFile = "files.txt"; file_put_contents ($ myFile, "กล้วย". PHP_EOL); file_put_contents ($ myFile, "จีน". PHP_EOL, FILE_APPEND);

คุณต้องทำงานกับฟังก์ชันเหล่านี้บ่อยๆดังนั้นจึงควรจดจำฟังก์ชันเหล่านี้ไว้ให้ดีที่สุด นอกจากนี้วันหนึ่งพวกเขาอาจทำให้งานที่ซับซ้อนบางอย่างง่ายขึ้นเมื่อทำงานกับไฟล์ PHP

ชอบ:
0
บทความยอดนิยม
การพัฒนาทางจิตวิญญาณ
อาหาร
Y