将用户输入导出到txt文件

时间:2016-11-30 08:17:11

标签: scala list input

我可以以" 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()

1 个答案:

答案 0 :(得分:0)

您需要以追加模式打开文件。请改用this constructor

public FileOutputStream(File file,
                boolean append)
                 throws FileNotFoundException
  

append - 如果为true,则将字节写入文件末尾   而不是开始

其余的似乎很好,你在写作结束时已经有了新的一行。