Groovy 文件I/O

2022-07-21 11:20 更新

Groovy在使用I / O時(shí)提供了許多輔助方法,Groovy提供了更簡(jiǎn)單的類(lèi)來(lái)為文件提供以下功能。

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

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

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

讀取文件

以下示例將輸出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

讀取文件的內(nèi)容到字符串

如果要將文件的整個(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ě)入文件

如果你想寫(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é)為單位)。

測(cè)試文件是否是目錄

如果要查看路徑是文件還是目錄,可以使用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

創(chuàng)建目錄

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

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

復(fù)制文件

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

獲取目錄內(nèi)容

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)