Groovy 文件I/O

2022-07-21 11:20 更新

Groovy在使用I / O時提供了許多輔助方法,Groovy提供了更簡單的類來為文件提供以下功能。

  • 讀取文件
  • 寫入文件
  • 遍歷文件樹
  • 讀取和寫入數(shù)據(jù)對象到文件

除此之外,您始終可以使用下面列出的用于文件I / O操作的標(biāo)準(zhǔn)Java類。

  • java.io.File
  • java.io.InputStream
  • java.io.OutputStream
  • java.io.Reader
  • java.io.Writer

讀取文件

以下示例將輸出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)容到字符串

如果要將文件的整個內(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)建目錄

如果要創(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()
   } 
}

如果存在該文件將被刪除。

復(fù)制文件

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ù)制到此文件。

獲取目錄內(nèi)容

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中的所有文件及其子目錄(如果存在)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號