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.