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