我可以以" DATA>的形式输入数据。 11,12,54,34,67,23"并以此格式保存到txt文件;
(DATA> 11,12,54,34,67,23)
但是,如果我再次运行后再尝试添加另一个,则删除并替换第一个。 我怎么能这样做,以便没有保存括号,因为我的读取功能不能与括号一起使用,下一行保存在下一行而不是替换原件?
这是我的代码
val mapdata3 = readFile("newDataFile.txt")
var mapdata2 = Map()
println ("Data in file " + mapdata3)
// *******************************************************************************************************************
// UTILITY FUNCTIONS
//GETS THE DATA FROM THE DATA.TXT
def readFile(filename: String): Map[String, List[Int]] = {
processInput(Source.fromFile(filename).getLines)
}
def processInput(lines: Iterator[String]): Map[String, List[Int]] = {
Try {
lines.foldLeft(Map[String, List[Int]]()) { (acc, line) =>
val splitline = line.split(",").map(_.trim).toList
acc.updated(splitline.head, splitline.tail.map(_.toInt))
}
}.getOrElse {
println("Sorry, an exception happened.")
Map()
}
}
// *****************************************************************************************
print("Enter Data key > ")
val key = readLine()
var result = key.split(";").map(_ split ">") collect { case Array(k, v) => (k, v) } toMap
println ("Data entered into file" + result)
// Writes the newly created stock list to the txt file
val data = result
val file = "newDataFile.txt"
val writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)))
for (x <- data) {
writer.write(x + "\n") // however you want to format it
}
writer.close()
答案 0 :(得分:0)
您需要以追加模式打开文件。请改用this constructor:
public FileOutputStream(File file,
boolean append)
throws FileNotFoundException
append - 如果为true,则将字节写入文件末尾 而不是开始
其余的似乎很好,你在写作结束时已经有了新的一行。