ग्रूवी - फ़ाइल I / O

ग्रूवी आई / ओ के साथ काम करते समय कई सहायक तरीके प्रदान करता है। ग्रूवी फाइलों के लिए निम्नलिखित कार्य करने के लिए आसान कक्षाएं प्रदान करता है।

  • फाइलें पढ़ना
  • फाइलों में लिखना
  • फ़ाइल पेड़ों की कटाई
  • फ़ाइलों को डेटा ऑब्जेक्ट पढ़ना और लिखना

इसके अतिरिक्त, आप हमेशा फ़ाइल I / O संचालन के लिए नीचे सूचीबद्ध सामान्य जावा कक्षाओं का उपयोग कर सकते हैं।

  • java.io.File
  • java.io.InputStream
  • java.io.OutputStream
  • java.io.Reader
  • java.io.Writer

फाइलें पढ़ना

निम्न उदाहरण ग्रूवी में एक पाठ फ़ाइल की सभी पंक्तियों को आउटपुट करेगा। प्रक्रियाeachLine पाठ फ़ाइल की प्रत्येक पंक्ति को पढ़ने के लिए सुनिश्चित करने के उद्देश्य से ग्रूवी में फ़ाइल वर्ग में बनाया गया है।

import java.io.File 
class Example { 
   static void main(String[] args) { 
      new File("E:/Example.txt").eachLine {  
         line -> println "line : $line"; 
      } 
   } 
}

फ़ाइल क्लास का उपयोग एक नई वस्तु को त्वरित करने के लिए किया जाता है जो फ़ाइल नाम को पैरामीटर के रूप में लेती है। यह तब प्रत्येकलाइन का कार्य करता है, इसे लाइन नामक एक चर में डालता है और तदनुसार प्रिंट करता है।

यदि फ़ाइल में निम्न पंक्तियाँ हैं, तो उन्हें मुद्रित किया जाएगा।

line : Example1
line : Example2

एक फ़ाइल की सामग्री को एक स्ट्रिंग स्ट्रिंग के रूप में पढ़ना

यदि आप फ़ाइल की संपूर्ण सामग्री को एक स्ट्रिंग के रूप में प्राप्त करना चाहते हैं, तो आप फ़ाइल वर्ग की पाठ संपत्ति का उपयोग कर सकते हैं। निम्न उदाहरण दिखाता है कि यह कैसे किया जा सकता है।

class Example { 
   static void main(String[] args) { 
      File file = new File("E:/Example.txt") 
      println file.text 
   } 
}

यदि फ़ाइल में निम्न पंक्तियाँ हैं, तो उन्हें मुद्रित किया जाएगा।

line : Example1 
line : Example2

फ़ाइलों को लेखन

यदि आप फ़ाइलों को लिखना चाहते हैं, तो आपको एक फ़ाइल में पाठ को आउटपुट करने के लिए लेखक वर्ग का उपयोग करने की आवश्यकता है। निम्न उदाहरण दिखाता है कि यह कैसे किया जा सकता है।

import java.io.File 
class Example { 
   static void main(String[] args) { 
      new File('E:/','Example.txt').withWriter('utf-8') { 
         writer -> writer.writeLine 'Hello World' 
      }  
   } 
}

यदि आप फ़ाइल का उदाहरण खोलते हैं। उदाहरण के लिए, आप फ़ाइल में मुद्रित शब्द "हैलो वर्ल्ड" देखेंगे।

किसी फ़ाइल का आकार प्राप्त करना

यदि आप फ़ाइल का आकार प्राप्त करना चाहते हैं, तो फ़ाइल के आकार को प्राप्त करने के लिए कोई भी फ़ाइल वर्ग की लंबाई संपत्ति का उपयोग कर सकता है। निम्न उदाहरण दिखाता है कि यह कैसे किया जा सकता है।

class Example {
   static void main(String[] args) {
      File file = new File("E:/Example.txt")
      println "The file ${file.absolutePath} has ${file.length()} bytes"
   } 
}

उपरोक्त कोड बाइट्स में फ़ाइल का आकार दिखाएगा।

एक फ़ाइल एक निर्देशिका है अगर परीक्षण

यदि आप यह देखना चाहते हैं कि क्या पथ एक फ़ाइल या निर्देशिका है, तो कोई भी इसका उपयोग कर सकता है isFile तथा isDirectoryफ़ाइल वर्ग का विकल्प। निम्न उदाहरण दिखाता है कि यह कैसे किया जा सकता है।

class Example { 
   static void main(String[] args) { 
      def file = new File('E:/') 
      println "File? ${file.isFile()}" 
      println "Directory? ${file.isDirectory()}" 
   } 
}

उपरोक्त कोड निम्न आउटपुट दिखाएगा -

File? false 
Directory? True

एक निर्देशिका बनाना

यदि आप एक नई निर्देशिका बनाना चाहते हैं, तो आप इसका उपयोग कर सकते हैं mkdirफ़ाइल वर्ग का कार्य। निम्न उदाहरण दिखाता है कि यह कैसे किया जा सकता है।

class Example {
   static void main(String[] args) {
      def file = new File('E:/Directory')
      file.mkdir()
   } 
}

यदि यह मौजूद नहीं है, तो निर्देशिका E: \ Directory बनाई जाएगी।

फ़ाइल हटाना

यदि आप किसी फ़ाइल को हटाना चाहते हैं तो आप फ़ाइल वर्ग के डिलीट फ़ंक्शन का उपयोग कर सकते हैं। निम्न उदाहरण दिखाता है कि यह कैसे किया जा सकता है।

class Example {
   static void main(String[] args) {
      def file = new File('E:/Example.txt')
      file.delete()
   } 
}

मौजूद होने पर फ़ाइल हटा दी जाएगी।

फ़ाइलों की प्रतिलिपि बनाना

ग्रूवी सामग्री को एक फ़ाइल से दूसरे में कॉपी करने के लिए कार्यक्षमता भी प्रदान करता है। निम्न उदाहरण दिखाता है कि यह कैसे किया जा सकता है।

class Example {
   static void main(String[] args) {
      def src = new File("E:/Example.txt")
      def dst = new File("E:/Example1.txt")
      dst << src.text
   } 
}

File1.txt फाइल बनाई जाएगी और File.txt की सारी सामग्री इस फाइल में कॉपी हो जाएगी।

निर्देशिका सामग्री हो रही है

ग्रूवी ड्राइव में ड्राइव और फाइलों को सूचीबद्ध करने के लिए कार्यक्षमता भी प्रदान करता है।

निम्न उदाहरण दिखाता है कि किसी मशीन पर ड्राइव का उपयोग करके कैसे प्रदर्शित किया जा सकता है listRoots फ़ाइल वर्ग का कार्य।

class Example { 
   static void main(String[] args) { 
      def rootFiles = new File("test").listRoots() 
      rootFiles.each { 
         file -> println file.absolutePath 
      }
   }
}

आपकी मशीन पर उपलब्ध ड्राइव के आधार पर, आउटपुट अलग-अलग हो सकता है। एक मानक मशीन पर आउटपुट निम्नलिखित के समान होगा -

C:\ 
D:\

निम्न उदाहरण दिखाता है कि किसी विशेष निर्देशिका में फ़ाइलों का उपयोग करके कैसे सूचीबद्ध किया जाए eachFile फ़ाइल वर्ग का कार्य।

class Example {
   static void main(String[] args) {
      new File("E:/Temp").eachFile() {  
         file->println file.getAbsolutePath()
      }
   } 
}

आउटपुट निर्देशिका E: \ Temp में सभी फ़ाइलों को प्रदर्शित करेगा

यदि आप किसी निर्देशिका और उसकी उपनिर्देशिकाओं में सभी फ़ाइलों को पुन: प्रदर्शित करना चाहते हैं, तो आप इसका उपयोग करेंगे eachFileRecurseफ़ाइल वर्ग का कार्य। निम्न उदाहरण दिखाता है कि यह कैसे किया जा सकता है।

class Example { 
   static void main(String[] args) {
      new File("E:/temp").eachFileRecurse() {
         file -> println file.getAbsolutePath()
      }
   }
}

आउटपुट निर्देशिका E: \ Temp और इसके उपनिर्देशिकाओं में मौजूद होने पर सभी फाइलों को प्रदर्शित करेगा।