Groovy在使用I / O時(shí)提供了許多輔助方法,Groovy提供了更簡(jiǎn)單的類(lèi)來(lái)為文件提供以下功能。
除此之外,您始終可以使用下面列出的用于文件I / O操作的標(biāo)準(zhǔn)Java類(lèi)。
以下示例將輸出Groovy中的文本文件的所有行。方法eachLine內(nèi)置在Groovy中的File類(lèi)中,目的是確保文本文件的每一行都被讀取。
import java.io.File class Example { static void main(String[] args) { new File("E:/Example.txt").eachLine { line -> println "line : $line"; } } }
File類(lèi)用于實(shí)例化以文件名作為參數(shù)的新對(duì)象。 然后它接受eachLine的函數(shù),將它放到一個(gè)line的變量并相應(yīng)地打印它。
line : Example1 line : Example2
如果要將文件的整個(gè)內(nèi)容作為字符串獲取,可以使用文件類(lèi)的text屬性。以下示例顯示如何完成此操作。
class Example { static void main(String[] args) { File file = new File("E:/Example.txt") println file.text } }
如果該文件包含以下行,它們將被打印出來(lái)。
line : Example1 line : Example2
如果你想寫(xiě)入文件,你需要使用作家類(lèi)輸出文本到一個(gè)文件中。下面的例子說(shuō)明了如何可以做到這一點(diǎn)。
import java.io.File class Example { static void main(String[] args) { new File('E:/','Example.txt').withWriter('utf-8') { writer -> writer.writeLine 'Hello World' } } }
如果你打開(kāi)文件example.txt文件,您將看到文本中打印了“Hello World”這個(gè)詞。
如果要獲取文件的大小,可以使用文件類(lèi)的length屬性來(lái)獲取,以下示例顯示如何完成此操作。
class Example { static void main(String[] args) { File file = new File("E:/Example.txt") println "The file ${file.absolutePath} has ${file.length()} bytes" } }
上面的代碼將顯示文件的大小(以字節(jié)為單位)。
如果要查看路徑是文件還是目錄,可以使用File類(lèi)的isFile和isDirectory選項(xiàng)。以下示例顯示如何完成此操作。
class Example { static void main(String[] args) { def file = new File('E:/') println "File? ${file.isFile()}" println "Directory? ${file.isDirectory()}" } }
上面的代碼將顯示以下輸出 -
File? false Directory? True
如果要?jiǎng)?chuàng)建一個(gè)新目錄,可以使用File類(lèi)的mkdir函數(shù)。以下示例顯示如何完成此操作。
class Example { static void main(String[] args) { def file = new File('E:/Directory') file.mkdir() } }
如果目錄E:\ Directory不存在,將創(chuàng)建它。
如果要?jiǎng)h除文件,可以使用File類(lèi)的delete功能。以下示例顯示如何完成此操作。
class Example { static void main(String[] args) { def file = new File('E:/Example.txt') file.delete() } }
如果存在該文件將被刪除。
Groovy還提供將內(nèi)容從一個(gè)文件復(fù)制到另一個(gè)文件的功能。以下示例顯示如何完成此操作。
class Example { static void main(String[] args) { def src = new File("E:/Example.txt") def dst = new File("E:/Example1.txt") dst << src.text } }
將創(chuàng)建文件Example1.txt,并將文件Example.txt的所有內(nèi)容復(fù)制到此文件。
Groovy還提供了列出驅(qū)動(dòng)器中的驅(qū)動(dòng)器和文件的功能。
以下示例顯示如何使用File類(lèi)的listRoots函數(shù)顯示機(jī)器上的驅(qū)動(dòng)器。
class Example { static void main(String[] args) { def rootFiles = new File("test").listRoots() rootFiles.each { file -> println file.absolutePath } } }
根據(jù)機(jī)器上可用的驅(qū)動(dòng)器,輸出可能會(huì)有所不同。在標(biāo)準(zhǔn)機(jī)器上的輸出將類(lèi)似于下面的一個(gè) -
C:\ D:\
以下示例顯示如何使用File類(lèi)的eachFile函數(shù)列出特定目錄中的文件。
class Example { static void main(String[] args) { new File("E:/Temp").eachFile() { file->println file.getAbsolutePath() } } }
輸出將顯示目錄E:\ Temp中的所有文件
如果要遞歸顯示目錄及其子目錄中的所有文件,則可以使用File類(lèi)的eachFileRecurse函數(shù)。以下示例顯示如何完成此操作。
class Example { static void main(String[] args) { new File("E:/temp").eachFileRecurse() { file -> println file.getAbsolutePath() } } }
輸出將顯示目錄E:\ Temp中的所有文件及其子目錄(如果存在)。
更多建議: