目次

Groovy
|- Groovyとは
|- 魅力
|- 感想
|- GSP
|- SwingBuilder

Groovy便利帖
|- 文字列操作
|- ファイル操作
|- リンク集

トップページ > Groovyとは > ファイル操作
更新日付 2005/12/1

ファイル操作の便利技集。

Groovyでは、JavaのFileクラスに色々なメソッドがあるかのごとく使用することができます。
表では、file、dirは以下のような意味です。

 file = new File( 'abc.txt' )
 dir = new File( 'someDir' )

追加メソッド
戻り値
例文
 
void file.append(String text)
fileの末尾に文字列を追加する
void file.append(String text , String charset )
fileの末尾に文字列を追加する
charset="UTF-8"など
File file.asWritable()  
File file.asWritable(String encoding)
 
void file.eachByte{ println it } fileからバイト列を読み込む
void dir.eachDir{ println it } dirの中のディレクトリを処理する
void dir.eachFile{ println it } dirの中のファイルを処理する
void dir.eachFileMatch( Object filter ){ println it }  
void dir.eachFileRecurse{ println it } dir以下の全ての要素を扱う。
再帰的に下の方まで扱う。探索順は深さ優先
void file.eachLine{ println it } fileの全ての行を処理する
void file.eachObject{ println it }  
Writable file.filterLine{ println it } フィルターを通して、行を処理する?下の例だと、空の行を飛ばして書き出される

w = file.filterLine{
  if( it != "" ) println it
}
w.each{ println it }
void file.filterLine(Writer w){ println it } fileの内容を読み込んで、wに書き出していく
と思う
String file.getText(String charset) ファイルの内容を全て読み込む
charset="UTF-8"など
String file.getText( )

file.text でも同じになります。
ファイルの内容を全て読み込む
BufferedInputStream file.newInputStream( ) fileから読み込むためのBufferedInputStreamを作る
ObjectInputStream file.newObjectInputStream( ) fileから読み込むためのObjectInputStreamを作る
BufferedOutputStream file.newOutputStream( )

ファイルに書き込むための
BufferedOutputStreamを作る

PrintWriter file.newPrintWriter( ) ファイルに書き込むための
PrintWriterを作る
PrintWriter file.newPrintWriter( String charset ) ファイルに書き込むための
PrintWriterを作る
charset="UTF-8"など
BufferedReader file.newReader( )  
BufferedReader file.newReader(String charset )  
BufferedWriter file.newWriter()  
BufferedWriter file.newWriter(boolean append)  
BufferedWriter file.newWriter(String charset, boolean append)  
BufferedWriter file.newWriter(String charset)  
byte[] file.readBytes()  
List file.readLines()  
void

file.splitEachLine(String sep){
    println it
}

行を読み込んで、sepで分割したものを操作する。
※JSR-2ではなんか変な動き
void file.withInputStream{
    it.eachLine{ }
}
itはBufferedInputStreamとなる。
void

file.withOutputStream{

}

 
void file.withPrintWriter{ }  
void file.withReader{ } itは Reader
void file.withWriter{ } itは Writer
void file.withWriter( String charset ){ } itは Writer
charset="UTF-8"など
void file.withWriterAppend( String charset){
    it.write( "a" )
}
末尾に追加、 itは Writer
charset="UTF-8"など
void file.write( String text ) ファイルに全ての文字を書き出す
void file.write(String text, String charset) ファイルに全ての文字を書き出す
charset="UTF-8"など

英語の資料を読みながら作ったので、変な説明になってるかも