#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)