Gradle技術之二 Groovy對檔案的操作
阿新 • • 發佈:2018-12-21
Groovy對檔案的操作
對檔案的遍歷 假設檔案的原始內容為:
hello,world
這裡是北京
andorid and ios are good system
第一種方法:使用 eachLine()
//1.1 new 一個File
def file = new File(filepath)
//1.2 groovy對檔案的遍歷
file.eachLine {
//列印每一行內容
line -> println line
}
//輸出
hello,world
這裡是北京
andorid and ios are good system
第二種方法:使用File的getText()
def content = file.getText() println content //輸出 hello,world 這裡是北京 andorid and ios are good system
是不是更簡單,直接呼叫一個方法就OK了,比Java操作檔案要簡單太多了吧
第三種方法:使用 file.readLines()方法
def list = file.readLines()
list.collect {
println it
}
println "檔案有" + list.size() + "行"
//輸出
hello,world
這裡是北京
andorid and ios are good system
檔案有3行
是不是很方便,readLines()函式直接把檔案內容以行為單位讀取到一個List中,這樣操作就更方便了
第四種方法:讀取檔案部分內容
//讀取前20個字元 def reader = file.withReader { reader -> char[] buffer = new char[20] reader.read(buffer) return buffer } println reader //輸出 hello,world 這裡是北京 an
如何拷貝檔案?
我們寫一個方法,把剛才的檔案拷貝到另一個檔案中去,程式碼如下:
def copy(String sourcePath, String destPath) { try { //1 建立目標檔案 def destFile = new File(destPath) if (!destFile.exists()) { destFile.createNewFile() } //2 開始拷貝 new File(sourcePath).withReader { reader -> def lines = reader.readLines() destFile.withWriter { writer -> lines.each { //把每一行都寫入到目標檔案中 line -> writer.append(line+"\r\n") } } } return true } catch (Exception e) { return false } }
讀寫物件 有時候我們會有這樣的需求,需要把我們的bean物件寫入到檔案中,用到的時候再讀出來,下面我們就來實現這樣的功能,程式碼如下:
//將一個物件寫入到檔案中
def saveObject(Object object, String path) {
try {
//1 首先建立目標檔案
def destFile = new File(path)
if (!destFile.exists()) {
destFile.createNewFile()
}
destFile.withObjectOutputStream { out ->
out.writeObject(object)
}
return true
} catch (Exception e) {
}
return false;
}
//從一個檔案中讀到bean
def readObject(String path) {
def obj = null
try {
//1 先判斷檔案是否存在
def file = new File(path)
if (!file.exists()) {
return null
}
//2 從檔案中讀取物件
file.withObjectInputStream { reader ->
obj = reader.readObject();
}
return obj
} catch (Exception e) {
}
return null
}
Groovy對xml檔案的操作
/**
test.xml 檔案的內容如下:
<langs type="current">
<language1>Java</language1>
<language2>Groovy</language2>
<language3>JavaScript</language3>
</langs>
*/
//一行程式碼就解析了xml
def langs = new XmlParser().parse("test.xml")
//打印出node的屬性
println langs.attribute('type')
//對xml檔案的遍歷
langs.each {
println it.text()
}
//輸出
current
Java
Groovy
JavaScript
以上就是groovy對檔案的操作