Groovy-file-io
Groovy-ファイルI/O
Groovyは、I/Oを操作する際に多くのヘルパーメソッドを提供します。 Groovyは、ファイルに次の機能を提供するための簡単なクラスを提供します。
- ファイルを読む
- ファイルへの書き込み
- ファイルツリーの走査
- ファイルへのデータオブジェクトの読み取りと書き込み
これに加えて、ファイルI/O操作には、以下にリストされている通常のJavaクラスをいつでも使用できます。
- java.io.File
- java.io.InputStream
- java.io.OutputStream
- java.io.Reader
- java.io.Writer
ファイルを読む
次の例では、Groovyのテキストファイルのすべての行を出力します。 メソッド eachLine は、テキストファイルの各行が確実に読み取られるようにするために、GroovyのFileクラスに組み込まれています。
import java.io.File
class Example {
static void main(String[] args) {
new File("E:/Example.txt").eachLine {
line -> println "line : $line";
}
}
}
Fileクラスは、ファイル名をパラメーターとして受け取る新しいオブジェクトをインスタンス化するために使用されます。 次に、eachLineの関数を取得し、それをlineという変数に入れて、それに応じて出力します。
ファイルに次の行が含まれている場合、それらが印刷されます。
line : Example1
line : Example2
ファイルの内容を文字列全体として読み取る
ファイルの内容全体を文字列として取得する場合は、ファイルクラスのtextプロパティを使用できます。 次の例は、これを行う方法を示しています。
class Example {
static void main(String[] args) {
File file = new File("E:/Example.txt")
println file.text
}
}
ファイルに次の行が含まれている場合、それらが印刷されます。
line : Example1
line : Example2
ファイルへの書き込み
ファイルに書き込みたい場合は、writerクラスを使用してテキストをファイルに出力する必要があります。 次の例は、これを行う方法を示しています。
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を開くと、「Hello World」という単語がファイルに出力されます。
ファイルのサイズを取得する
ファイルのサイズを取得する場合は、ファイルクラスのlengthプロパティを使用してファイルのサイズを取得できます。 次の例は、これを行う方法を示しています。
class Example {
static void main(String[] args) {
File file = new File("E:/Example.txt")
println "The file ${file.absolutePath} has ${file.length()} bytes"
}
}
上記のコードは、ファイルのサイズをバイト単位で示します。
ファイルがディレクトリかどうかのテスト
パスがファイルかディレクトリかを確認したい場合は、Fileクラスの 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
ディレクトリを作成する
新しいディレクトリを作成する場合は、Fileクラスの mkdir 関数を使用できます。 次の例は、これを行う方法を示しています。
class Example {
static void main(String[] args) {
def file = new File('E:/Directory')
file.mkdir()
}
}
ディレクトリE:\ Directoryが存在しない場合は作成されます。
ファイルを削除する
ファイルを削除する場合は、Fileクラスの削除機能を使用できます。 次の例は、これを行う方法を示しています。
class Example {
static void main(String[] args) {
def file = new File('E:/Example.txt')
file.delete()
}
}
ファイルが存在する場合は削除されます。
ファイルをコピーする
Groovyは、あるファイルから別のファイルにコンテンツをコピーする機能も提供します。 次の例は、これを行う方法を示しています。
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が作成され、ファイルExample.txtのすべての内容がこのファイルにコピーされます。
ディレクトリの内容を取得する
Groovyは、ドライブとドライブ内のファイルをリストする機能も提供します。
次の例は、Fileクラスの listRoots 関数を使用して、マシン上のドライブを表示する方法を示しています。
class Example {
static void main(String[] args) {
def rootFiles = new File("test").listRoots()
rootFiles.each {
file -> println file.absolutePath
}
}
}
マシンで使用可能なドライブに応じて、出力が異なる場合があります。 標準的なマシンでは、出力は次のようになります-
C:\
D:\
次の例は、Fileクラスの eachFile 関数を使用して、特定のディレクトリ内のファイルを一覧表示する方法を示しています。
class Example {
static void main(String[] args) {
new File("E:/Temp").eachFile() {
file->println file.getAbsolutePath()
}
}
}
出力には、ディレクトリE:\ Temp内のすべてのファイルが表示されます
ディレクトリとそのサブディレクトリ内のすべてのファイルを再帰的に表示する場合は、Fileクラスの eachFileRecurse 関数を使用します。 次の例は、これを行う方法を示しています。
class Example {
static void main(String[] args) {
new File("E:/temp").eachFileRecurse() {
file -> println file.getAbsolutePath()
}
}
}
出力には、ディレクトリE:\ Tempおよびそのサブディレクトリ(存在する場合)にあるすべてのファイルが表示されます。