заводной ввод в файл, итерация по карте

#groovy

#заводной

Вопрос:

Привет, я получил карту и цикл итерации по карте.

 def map = [file.txt : file2.txt,
file3.txt : fil4.txt,
file5.txt : file6.txt]

map.each { k,v ->
 collection = new file("k").readLines()
 collection2 = new file("v").readLines.findResult() 

def commons = collection.intersect(collection2)

}
 

Я хочу, чтобы каждая коллекция «commons» сохранялась в файле, а не перезаписывала этот файл на следующих итерациях.

Есть ли возможность сделать такую вещь в цикле?

Комментарии:

1. Пожалуйста, добавьте код, который вы пробовали, и как он не удался (например, ошибки, трассировки стека, журналы, …), Чтобы мы могли его улучшить.

2. @cfrick моей первой идеей было «создать файл («путь / к / файлу»). напишите (commons)», затем «новый файл («путь / к / файлу»). withWriter(commons) «. и я не знаю, как с этим справиться

3. @rupert, покажите примеры — что у вас есть в file1 — file4 и что вы ожидаете в выходном файле.

4. @daggett файлы от 1 до 6 — это просто простые файлы с текстом, и я хочу прочитать строки из файлов и показать commons. Мой скрипт работает, но я не знаю, как сохранить мой результат, который является коллекцией «commons», в файл, например result.txt

5. ваш вопрос не соответствует тому, что вы задаете сейчас … используйте что-то простое: новый файл (путь), добавить (текст)

Ответ №1:

Предположим, у вас уже есть список файлов для объединения, тогда единственное, что вам нужно сделать, это записать строки каждого файла в выходной файл, вы можете сделать что-то вроде этого:

 def files = ['file1.txt', 'file3.txt', 'file2.txt']
def file = new File('output.txt')
def outputFile = file.newPrintWriter()

def mergeFile = { fileName ->   
    File sourceFile = new File(fileName) 
    sourceFile.eachLine{ line ->
        outputFile.println(line)
    }
}

files.each(mergeFile)

out.close()
 

Это объединит содержимое всех ваших файлов, есть еще одна вещь, вам может потребоваться указать папку с файлами, поэтому я предлагаю использовать конструктор, который получает папку.

 File output = new File(folder, filename)