Допустим, вы не можете или просто не хотите читать весь файл в память. Или, с другой стороны, что если файл имеет менее 4 строк? Можно ли по-прежнему безопасно выполнять обмен?
import java.nio.file.{Files, Paths}
util.Using.Manager { use => //Scala 2.13
val input = use(io.Source.fromFile("inFile.txt"))
val output = use(Files.newBufferedWriter(Paths.get("outFile.txt")))
val itr = input.getLines()
val linesAB = Seq.fill(2)(util.Try(itr.next()))
val linesCD = Seq.fill(2)(util.Try(itr.next()))
linesCD.foreach(_.foreach(s => output.write(s + "\n")))
linesAB.foreach(_.foreach(s => output.write(s + "\n")))
while (itr.hasNext) output.write(itr.next() + "\n")
}.fold(println,identity) //report failure
результат:
~> head *File.txt # a 3-line file
==> inFile.txt <==
A
B
C
==> outFile.txt <==
C
A
B