วันนี้ คุณจะได้เรียนรู้วิธีอ่านและเขียนไฟล์ใน Ruby เพื่อแยกเนื้อหา สร้างไฟล์ใหม่ และค้นหาข้อมูลที่ต้องการได้!
นี่คือสิ่งที่เราจะพูดถึง :
สารบัญ
- 1 วิธีอ่านไฟล์ใน Ruby
- 2 วิธีเขียนไฟล์ใน Ruby
- วิธีไฟล์ทับทิม 3 วิธี
- 4 Directory Operations
- 5 วิธีใช้โมดูล FileUtils
- 6 สรุป
- 6.1 ที่เกี่ยวข้อง
มาทำสิ่งนี้กันเถอะ!
วิธีอ่านไฟล์ใน Ruby
คุณสามารถอ่านไฟล์ใน Ruby ได้ดังนี้:
- เปิดไฟล์ ด้วย
open
วิธีการ - อ่านไฟล์ , ทั้งไฟล์, ทีละบรรทัด หรือจำนวนไบต์เฉพาะ
- ปิดไฟล์ ด้วย
close
วิธีการ
นี่คือขั้นตอนโดยละเอียด
ใช้ File
คลาสเพื่อเปิดไฟล์:
file =File.open("users.txt")
เป็นผลให้คุณจะได้รับ File
วัตถุ แต่ยังไม่ใช่เนื้อหาของไฟล์
ตอนนี้ :
คุณสามารถอ่านเนื้อหาของไฟล์ได้สามวิธี
ขั้นแรก คุณสามารถอ่านไฟล์ทั้งหมดได้
ถูกใจสิ่งนี้ :
file_data =file.read# "user1\nuser2\nuser3\n"
หากคุณกำลังทำงานกับไฟล์ที่มีหลายบรรทัด คุณสามารถ split
file_data
หรือใช้ readlines
วิธีการบวก chomp
วิธีการลบอักขระขึ้นบรรทัดใหม่
ตัวอย่าง :
file_data =file.readlines.map(&:chomp)# ["user1", "user2", "user3"]
เมื่อคุณทำงานกับไฟล์เสร็จแล้ว คุณต้องการ close
เพื่อเพิ่มหน่วยความจำและทรัพยากรระบบ
ถูกใจสิ่งนี้ :
file.close
เป็นทางเลือกแทนการเปิดและปิดไฟล์ คุณสามารถใช้ File.read
วิธีการ:
file_data =File.read("user.txt") .split# ["user1", "user2", "user3"]
อีกหนึ่งเคล็ดลับในการอ่านไฟล์
หากคุณต้องการประมวลผลไฟล์ครั้งละหนึ่งบรรทัด คุณสามารถใช้ foreach
วิธีการ
ตัวอย่าง :
File.foreach("users.txt") { |line| ใส่บรรทัด }
แทนที่จะ อ่านไฟล์ทั้งหมดลงในหน่วยความจำ คุณจะสามารถประมวลผลไฟล์ได้ครั้งละหนึ่งบรรทัด ซึ่งมีประโยชน์สำหรับไฟล์ขนาดใหญ่
วิธีการเขียนไฟล์ใน Ruby
หากคุณต้องการเขียนไฟล์โดยใช้ Ruby:
- เปิดไฟล์ในโหมดเขียน (แฟล็ก "w")
- ใช้
write
วิธีการเพิ่มข้อมูลลงในไฟล์ - หากคุณไม่ได้ใช้เวอร์ชันบล็อก อย่าลืม
close
ตัวอย่าง :
File.open("log.txt", "w") { |f| f.write "#{Time.now} - ผู้ใช้เข้าสู่ระบบ\n" }
สำคัญ :
สิ่งนี้จะเขียนเนื้อหาไฟล์ก่อนหน้า!
หากคุณต้องการเพิ่มเนื้อหาใหม่ลงในไฟล์ ให้ใช้แฟล็ก "a" (ต่อท้าย) แทนแฟล็ก "w" (เขียน)
ทางลัดหนึ่งคือการใช้ File.write
:
File.write("log.txt", "data...")
หากต้องการใช้วิธีนี้ในโหมดต่อท้าย :
File.write("log.txt", "data...", โหมด:"a")
นั่นเป็นวิธีที่ง่ายที่สุดในการเขียนไฟล์ใน Ruby ด้วยโค้ดเพียงบรรทัดเดียว 🙂
อีกอย่าง…
หากคุณต้องการเขียนอาร์เรย์ลงในไฟล์ คุณจะต้องแปลงเป็นสตริงก่อน
ตามนี้ :
File.write("log.txt", [1,2,3].join("\n") โหมด:"a")
กระบวนการแปลงวัตถุให้เป็นสตริงนี้เรียกว่าการทำให้เป็นอนุกรม
วิธีการไฟล์ทับทิม
คุณสามารถทำสิ่งอื่น ๆ กับไฟล์ได้ ยกเว้นการอ่านและเขียนถึงมัน
ตัวอย่างเช่น คุณอาจต้องการทราบว่ามีไฟล์อยู่หรือไม่ หรือเพื่อรับรายการไฟล์สำหรับไดเร็กทอรีปัจจุบัน
คุณกำลังจะใช้วิธีการเช่น :
- เปลี่ยนชื่อ
- ขนาด
- มีอยู่ไหม
- นามสกุล
- ชื่อฐาน
- นามสกุล
- ไดเรกทอรี?
- ไฟล์?
มาดูตัวอย่างกัน :
# การเปลี่ยนชื่อ fileFile.rename("old-name.txt", "new-name.txt")# ขนาดไฟล์เป็น bytesFile.size("users.txt")# ไฟล์นี้มีอยู่แล้วหรือไม่?File.exists ?("log.txt")# รับนามสกุลไฟล์ ใช้งานได้แม้ว่าไฟล์นั้นจะไม่มีอยู่จริง File.extname("users.txt")# => ".txt"# รับชื่อไฟล์โดยไม่มีไดเร็กทอรี partFile basename("/tmp/ebook.pdf")# => "ebook.pdf"# รับพาธสำหรับไฟล์นี้ โดยไม่มีไฟล์ nameFile.dirname("/tmp/ebook.pdf")# => "/tmp" # นี่คือไฟล์หรือไดเร็กทอรีจริงๆ?File.directory?("cats")
ตัวอย่างสุดท้ายจะเหมาะสมกว่าหากคุณวนซ้ำเนื้อหาของรายการไดเรกทอรี
def find_files_in_current_directory รายการ =Dir.entries(".") items.reject { |entry| File.directory?(รายการ) }สิ้นสุด
คุณยังสามารถรับสถิติสำหรับไฟล์ เช่น ขนาดไฟล์ สิทธิ์ วันที่สร้าง ฯลฯ:
File.stat("/tmp")
การทำงานของไดเร็กทอรี
ใช้ Dir.glob คุณสามารถรับรายการไฟล์ทั้งหมดที่ตรงกับรูปแบบที่ต้องการได้
นี่คือตัวอย่างบางส่วน:
# ไฟล์ทั้งหมดในไดเร็กทอรีปัจจุบันDir.glob("*")# ไฟล์ทั้งหมดที่มี "spec" ในชื่อDir.glob("*spec*")# ไฟล์ทับทิมทั้งหมดDir.glob("*.rb")ก่อน>โค้ดหนึ่งบรรทัดนี้จะแสดงรายการไฟล์ทั้งหมดใน Ruby ซ้ำๆ โดยเริ่มจาก ไดเรกทอรีปัจจุบัน :
Dir.glob("**/**")ใช้สิ่งนี้หากคุณต้องการค้นหาเฉพาะไดเรกทอรี:
Dir.glob("**/**/")การใช้คลาส Dir ยังสามารถพิมพ์ ไดเร็กทอรีการทำงานปัจจุบัน :
Dir.pwdตรวจสอบว่าไดเร็กทอรีว่างหรือไม่:
Dir.empty?("/tmp")# falseตรวจสอบว่ามีไดเรกทอรีอยู่หรือไม่:
Dir.exists?("/home/jesus")# trueสร้างไดเร็กทอรีใหม่:
Dir.mkdir("/tmp/testing")สร้างไดเร็กทอรีชั่วคราวด้วย mktmpdir:
Dir.mktmpdir do |dir| File.write(dir + "/log.txt", "test") สิ้นสุดวิธีใช้โมดูล FileUtils
มียูทิลิตีการจัดการไฟล์พิเศษบางอย่างที่คุณสามารถเข้าถึงได้ภายในโมดูล FileUtils
ตัวอย่างเช่น คุณสามารถ เปรียบเทียบไฟล์ , แตะไฟล์ (เพื่อ อัปเดตการเข้าถึงล่าสุด &เวลาแก้ไข ) หรือคัดลอกไฟล์และไดเรกทอรีด้วย cp_r .
ถูกใจสิ่งนี้ :
ต้องการ 'fileutils'FileUtils.compare_file("a.txt", "b.txt")FileUtils.touch("/tmp/lock")FileUtils.cp_r("data", "backup")ตัว “r” ใน
cp_r
ย่อมาจาก “recursive”สรุป
คุณได้เรียนรู้วิธีจัดการไฟล์และโฟลเดอร์ใน Ruby โดยใช้วิธีการที่มีอยู่แล้วภายใน เช่น
File.read
&File.write
.ขอบคุณสำหรับการอ่าน!