Учебники

Groovy — File I / O

Groovy предоставляет несколько вспомогательных методов при работе с вводом / выводом. Groovy предоставляет более простые классы для обеспечения следующих функций для файлов.

  • Чтение файлов
  • Запись в файлы
  • Обход файловых деревьев
  • Чтение и запись объектов данных в файлы

В дополнение к этому вы всегда можете использовать обычные Java-классы, перечисленные ниже для операций ввода-вывода файлов.

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

Чтение файлов

В следующем примере будут выведены все строки текстового файла в Groovy. Метод eachLine встроен в класс File в Groovy, чтобы обеспечить чтение каждой строки текстового файла.

import java.io.File 
class Example { 
   static void main(String[] args) { 
      new File("E:/Example.txt").eachLine {  
         line -> println "line : $line"; 
      } 
   } 
}

Класс File используется для создания экземпляра нового объекта, который принимает имя файла в качестве параметра. Затем он берет функцию eachLine, помещает ее в переменную с именем line и печатает ее соответствующим образом.

Если файл содержит следующие строки, они будут напечатаны.

line : Example1
line : Example2

Чтение содержимого файла как целой строки

Если вы хотите получить все содержимое файла в виде строки, вы можете использовать свойство text класса файла. В следующем примере показано, как это можно сделать.

class Example { 
   static void main(String[] args) { 
      File file = new File("E:/Example.txt") 
      println file.text 
   } 
}

Если файл содержит следующие строки, они будут напечатаны.

line : Example1 
line : Example2

Запись в файлы

Если вы хотите записывать в файлы, вам нужно использовать класс Writer для вывода текста в файл. В следующем примере показано, как это можно сделать.

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"
   } 
}

Приведенный выше код будет показывать размер файла в байтах.

Проверка, является ли файл каталогом

Если вы хотите увидеть, является ли путь файлом или каталогом, можно использовать опции isFile и isDirectory класса File. В следующем примере показано, как это можно сделать.

class Example { 
   static void main(String[] args) { 
      def file = new File('E:/') 
      println "File? ${file.isFile()}" 
      println "Directory? ${file.isDirectory()}" 
   } 
}

Приведенный выше код будет показывать следующий вывод —

File? false 
Directory? True

Создание каталога

Если вы хотите создать новый каталог, вы можете использовать функцию mkdir класса File. В следующем примере показано, как это можно сделать.

class Example {
   static void main(String[] args) {
      def file = new File('E:/Directory')
      file.mkdir()
   } 
}

Каталог E: \ Directory будет создан, если он не существует.

Удаление файла

Если вы хотите удалить файл, вы можете использовать функцию удаления класса File. В следующем примере показано, как это можно сделать.

class Example {
   static void main(String[] args) {
      def file = new File('E:/Example.txt')
      file.delete()
   } 
}

Файл будет удален, если он существует.

Копирование файлов

Groovy также предоставляет функциональность для копирования содержимого из одного файла в другой. В следующем примере показано, как это можно сделать.

class Example {
   static void main(String[] args) {
      def src = new File("E:/Example.txt")
      def dst = new File("E:/Example1.txt")
      dst << src.text
   } 
}

Будет создан файл Example1.txt, и все содержимое файла Example.txt будет скопировано в этот файл.

Получение содержимого каталога

Groovy также предоставляет функции для вывода списка дисков и файлов на диске.

В следующем примере показано, как можно отобразить диски на машине с помощью функции listRoots класса File.

class Example { 
   static void main(String[] args) { 
      def rootFiles = new File("test").listRoots() 
      rootFiles.each { 
         file -> println file.absolutePath 
      }
   }
}

В зависимости от дисков, доступных на вашем компьютере, производительность может отличаться. На стандартной машине вывод будет похож на следующий —

C:\ 
D:\

В следующем примере показано, как составить список файлов в определенном каталоге с помощью функции eachFile класса File.

class Example {
   static void main(String[] args) {
      new File("E:/Temp").eachFile() {  
         file->println file.getAbsolutePath()
      }
   } 
}

Вывод будет отображать все файлы в каталоге E: \ Temp

Если вы хотите рекурсивно отображать все файлы в каталоге и его подкаталогах, то вы должны использовать функцию eachFileRecurse класса File. В следующем примере показано, как это можно сделать.

class Example { 
   static void main(String[] args) {
      new File("E:/temp").eachFileRecurse() {
         file -> println file.getAbsolutePath()
      }
   }
} 

Вывод будет отображать все файлы в каталоге E: \ Temp и в его подкаталогах, если они существуют.