2016-11-30 76 views
0

我可以以“DATA> 11,12,54,34,67,23”的形式输入数据,并以此格式保存到txt文件中;将用户输入导出到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

您需要打开追加模式的文件。使用this constructor代替:

public FileOutputStream(File file, 
       boolean append) 
       throws FileNotFoundException 

追加 - 如果为true,则将字节写入文件 而不是开头

其余似乎罚款的最后,你已经有了一个新的在你的写作结束。

+0

在Writer val的末尾,我还没有调用文件输出流吗? “(new FileOutputStream(file)”@yǝsʞǝlA –

+0

我的意思是:new FileOutputStream(file,true) –