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

วิธีทำงานกับไดเร็กทอรีใน Ruby

คุณรู้หรือไม่ว่าคุณสามารถนำทางระบบไฟล์ของคุณด้วย Ruby?

กับคลาส Ruby “ผบ.”

คุณสามารถแสดงรายการไดเรกทอรี เปลี่ยนไดเรกทอรีปัจจุบัน และสร้างโฟลเดอร์ใหม่ได้!

นี่คือตัวอย่าง :

filenames = Dir.entries(".")

entriesนี้ วิธีการส่งกลับอาร์เรย์ของรายการชื่อไฟล์ ทุกรายการเป็นสตริง ดังนั้น คุณจะต้องรวมสิ่งนี้กับคลาส Ruby File หากคุณต้องการอ่านไฟล์เหล่านี้จริงๆ

ว่าแต่ จุดนี้ (. ) หมายถึง ไดเรกทอรีปัจจุบัน .

นี่จะเป็นไดเร็กทอรีที่โค้ดของคุณเรียกใช้ ไม่ใช่ไดเร็กทอรีที่คุณอยู่ (ในเทอร์มินัลของคุณ) เมื่อรันโค้ด

ด้วยเหตุนั้น…

การตรวจสอบไดเร็กทอรีปัจจุบันของคุณอาจเป็นประโยชน์โดยใช้ Dir.pwd วิธีการ

ตอนนี้ :

มาเรียนรู้วิธีใช้ Dir . กันเถอะ class เพื่อสร้างไดเร็กทอรีใหม่ (mkdir ) เปลี่ยนชื่อพวกเขา (mv ) และค้นหาชื่อไฟล์ที่เป็นไปตามรูปแบบเฉพาะ (glob )

การใช้ Ruby's Mkdir Method เพื่อสร้างไดเรกทอรีใหม่

หากคุณต้องการสร้างโฟลเดอร์ใหม่ด้วย Ruby คุณสามารถใช้ Dir.mkdir วิธีการ

ตัวอย่าง :

Dir.mkdir("testing")

หากกำหนดเส้นทางสัมพัทธ์ ไดเรกทอรีนี้จะถูกสร้างขึ้นภายใต้เส้นทางปัจจุบัน (Dir.pwd )

คุณอาจได้รับข้อผิดพลาดเล็กน้อย :

  • ไดเรกทอรีมีอยู่แล้ว (Errno::EEXIST )
  • การอนุญาตถูกปฏิเสธ (Errno::EACCES )
  • คุณกำลังพยายามสร้างโฟลเดอร์ภายใต้โฟลเดอร์อื่นที่ยังไม่มีอยู่ (Errno::ENOENT )

ข้อผิดพลาดสุดท้ายมักเกิดขึ้นเมื่อคุณพยายามสร้างไดเรกทอรีที่ซ้อนกัน

หรือหากคุณกำลังใช้เส้นทางที่ไม่มีอยู่จริง

สองโซลูชั่น :

  • ตรวจสอบว่ามีไดเรกทอรีอยู่หรือไม่ก่อนที่จะสร้าง (ด้วย Dir.exists? )
  • ใช้ชั้นเรียนขั้นสูง (ส่วนถัดไป)

มาเรียนรู้กันต่อ!

การทำงานขั้นสูงด้วยโมดูล FileUtils

หากคุณต้องการแรงม้าเพิ่มเติม คุณสามารถนำเข้า FileUtils โมดูลจากไลบรารีมาตรฐาน

ประกอบด้วยวิธีการต่างๆ เช่น mkdir_p ที่สร้างไดเร็กทอรีที่ซ้อนกันในขั้นตอนเดียว

นี่คือตัวอย่าง :

require 'fileutils'

FileUtils.mkdir_p("/tmp/testing/a/b")

เจ๋งมากใช่มั้ย

ยังไม่หมดแค่นั้น FileUtils ยังนำเสนอตัวเลือกเพิ่มเติมสำหรับการดำเนินการไฟล์ทั้งหมดในรูปแบบของอาร์กิวเมนต์คำหลัก เช่นเดียวกับ verbose ตัวเลือก (พิมพ์คำสั่ง Linux) &noop (อย่าเปลี่ยนไฟล์) ตัวเลือก

ให้มันลอง!

วิธีการเปลี่ยนชื่อไดเร็กทอรี

Ruby ช่วยให้คุณดำเนินการทุกอย่างที่ทำได้จากอินเทอร์เฟซผู้ใช้ระบบปฏิบัติการหรือจากเทอร์มินัล

ตัวอย่างเช่น…

คุณสามารถเปลี่ยนชื่อไดเร็กทอรีแบบนี้ได้ :

FileUtils.mv("/tmp/a", "/tmp/b")

คุณจะต้องใช้ FileUtils . ด้วย ที่นี่เพราะ mv ไม่มีใน Dir ชั้นเรียน

วิธีการเปลี่ยนไดเร็กทอรีปัจจุบันของคุณ

เนื่องจากการทำงานของไดเร็กทอรีทั้งหมดรันจากไดเร็กทอรีปัจจุบัน คุณอาจต้องการเปลี่ยนแปลง

คุณสามารถใช้ Dir.chdir วิธีการทำ

ตัวอย่าง :

Dir.chdir("/tmp") { Dir.entries(".") }

ใช้งานได้สองวิธี :

  • ด้วยบล็อก ไดเร็กทอรีปัจจุบันจะเปลี่ยนเฉพาะโค้ดภายในบล็อกเท่านั้น
  • ถ้าไม่มีการบล็อก มันจะเปลี่ยนโค้ดทั้งหมดหลังจากการเรียกใช้เมธอด

สังเกตว่า chdir ใช้งานได้ภายในกระบวนการ Ruby ของคุณเท่านั้น ไม่ส่งผลต่อ “โลกภายนอก”

กล่าวอีกนัยหนึ่ง…

มันจะไม่เปลี่ยนไดเร็กทอรีการทำงานของเชลล์ของคุณหลังจากที่โปรแกรม Ruby ของคุณหยุดทำงาน

รายการไฟล์และไดเรกทอรีที่มีการจับคู่รูปแบบ

ต้องการค้นหาไฟล์ Ruby ทั้งหมดในโฟลเดอร์หรือไม่? งานง่ายด้วย glob วิธีการ!

ตัวอย่าง :

Dir.glob("*.rb")

คุณสามารถใช้ส่วนขยายอื่นๆ ที่ต้องการได้ เช่น “.txt” หรือ “.yml” หรือข้อความอื่นๆ ที่เป็นส่วนหนึ่งของชื่อไฟล์

ต้องการค้นหาไฟล์ภายในโฟลเดอร์ทั้งหมดหรือไม่

ใช่ เป็นไปได้:

Dir.glob("**/*.rb")

ผลลัพธ์คืออาร์เรย์ที่มีชื่อไฟล์ทั้งหมด รวมทั้งเส้นทางที่สัมพันธ์กัน คุณสามารถลบพาธและรับเฉพาะชื่อไฟล์โดยใช้ File.basename เมธอดในทุกไฟล์ของรายการที่คุณได้รับจาก glob .

สรุป

คุณได้เรียนรู้วิธีการทำงานกับไดเรกทอรีใน Ruby โดยใช้ Dir &FileUtils ชั้นเรียน

ตอนนี้ถึงตาคุณแล้วที่จะนำสิ่งนี้ไปปฏิบัติ

ขอบคุณที่อ่าน! 🙂