Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

วิธีอ่านและเขียนไฟล์ใน Ruby (พร้อมตัวอย่าง)

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

วิธีอ่านและเขียนไฟล์ใน Ruby (พร้อมตัวอย่าง)

นี่คือสิ่งที่เราจะพูดถึง :

สารบัญ

  • 1 วิธีอ่านไฟล์ใน Ruby
  • 2 วิธีเขียนไฟล์ใน Ruby
  • วิธีไฟล์ทับทิม 3 วิธี
  • 4 Directory Operations
  • 5 วิธีใช้โมดูล FileUtils
  • 6 สรุป
    • 6.1 ที่เกี่ยวข้อง

มาทำสิ่งนี้กันเถอะ!

วิธีอ่านไฟล์ใน Ruby

คุณสามารถอ่านไฟล์ใน Ruby ได้ดังนี้:

  1. เปิดไฟล์ ด้วย open วิธีการ
  2. อ่านไฟล์ , ทั้งไฟล์, ทีละบรรทัด หรือจำนวนไบต์เฉพาะ
  3. ปิดไฟล์ ด้วย 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:

  1. เปิดไฟล์ในโหมดเขียน (แฟล็ก "w")
  2. ใช้ write วิธีการเพิ่มข้อมูลลงในไฟล์
  3. หากคุณไม่ได้ใช้เวอร์ชันบล็อก อย่าลืม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 .

ขอบคุณสำหรับการอ่าน!