Groovy - Dosya G / Ç

Groovy, G / Ç ile çalışırken bir dizi yardımcı yöntem sağlar. Groovy, dosyalar için aşağıdaki işlevleri sağlamak için daha kolay sınıflar sağlar.

  • Dosyaları okuma
  • Dosyalara yazma
  • Dosya ağaçlarının üzerinden geçme
  • Veri nesnelerini dosyalara okuma ve yazma

Buna ek olarak, Dosya G / Ç işlemleri için her zaman aşağıda listelenen normal Java sınıflarını kullanabilirsiniz.

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

Dosyaları okuma

Aşağıdaki örnek, Groovy'deki bir metin dosyasının tüm satırlarının çıktısını alacaktır. YöntemeachLine metin dosyasının her satırının okunmasını sağlamak amacıyla Groovy'deki File sınıfında yerleşiktir.

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

File sınıfı, dosya adını parametre olarak alan yeni bir nesneyi başlatmak için kullanılır. Daha sonra eachLine'ın işlevini alır, onu line adlı bir değişkene koyar ve buna göre yazdırır.

Dosya aşağıdaki satırları içeriyorsa, yazdırılacaktır.

line : Example1
line : Example2

Bir Dosyanın İçeriğini Tüm Dize Olarak Okuma

Dosyanın tüm içeriğini bir dize olarak almak istiyorsanız, file sınıfının text özelliğini kullanabilirsiniz. Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir.

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

Dosya aşağıdaki satırları içeriyorsa, yazdırılacaktır.

line : Example1 
line : Example2

Dosyalara Yazma

Dosyalara yazmak istiyorsanız, bir dosyaya metin çıktısı almak için writer sınıfını kullanmanız gerekir. Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir.

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

Example.txt dosyasını açarsanız, dosyaya yazdırılan "Merhaba Dünya" sözcüklerini göreceksiniz.

Bir Dosyanın Boyutunu Alma

Dosyanın boyutunu elde etmek istiyorsanız, dosyanın boyutunu elde etmek için dosya sınıfının length özelliğini kullanabilirsiniz. Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir.

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

Yukarıdaki kod dosyanın boyutunu bayt cinsinden gösterecektir.

Bir Dosyanın Dizin Olup Olmadığını Test Etme

Bir yolun dosya mı yoksa dizin mi olduğunu görmek istiyorsanız, isFile ve isDirectoryFile sınıfının seçeneği. Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir.

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

Yukarıdaki kod aşağıdaki çıktıyı gösterecektir -

File? false 
Directory? True

Bir Dizin Oluşturma

Yeni bir dizin oluşturmak istiyorsanız, mkdirFile sınıfının işlevi. Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir.

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

E: \ Dizin dizini mevcut değilse oluşturulacaktır.

Bir Dosyayı Silme

Bir dosyayı silmek isterseniz, File sınıfının silme işlevini kullanabilirsiniz. Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir.

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

Dosya varsa silinecektir.

Dosyalar kopyalanıyor

Groovy ayrıca içeriği bir dosyadan diğerine kopyalama işlevi de sağlar. Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir.

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

Example1.txt dosyası oluşturulacak ve Example.txt dosyasının tüm içeriği bu dosyaya kopyalanacaktır.

Dizin İçeriklerini Alma

Groovy ayrıca bir sürücüdeki sürücüleri ve dosyaları listelemek için işlevsellik sağlar.

Aşağıdaki örnek, bir makinedeki sürücülerin, listRoots File sınıfının işlevi.

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

Makinenizde bulunan sürücülere bağlı olarak çıktı değişebilir. Standart bir makinede çıktı aşağıdakine benzer olacaktır -

C:\ 
D:\

Aşağıdaki örnek, belirli bir dizindeki dosyaların nasıl listeleneceğini gösterir. eachFile File sınıfının işlevi.

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

Çıktı, E: \ Temp dizinindeki tüm dosyaları görüntüler.

Bir dizindeki tüm dosyaları ve alt dizinlerini yinelemeli olarak görüntülemek istiyorsanız, o zaman eachFileRecurseFile sınıfının işlevi. Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir.

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

Çıktı, E: \ Temp dizinindeki ve varsa alt dizinlerindeki tüm dosyaları görüntüler.