2016-11-30 3 views
0

Ich kann Daten in Form von "DATA> 11,12,54,34,67,23" eingeben und speichert es in der TXT-Datei in diesem Format;Exportieren von Benutzereingabe in TXT-Datei

(DATA> 11,12,54,34,67,23)

aber wenn ich noch einmal zu versuchen, und fügen Sie danach wieder ausgeführt wird, das erste wird gelöscht und ersetzt. Wie kann ich dafür sorgen, dass keine Klammern gespeichert werden, da meine Lesefunktion nicht mit den Klammern funktioniert und der nächste gespeicherte Text in der nächsten Zeile erscheint, anstatt das Original zu ersetzen?

Hier ist mein Code

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

Antwort

0

Sie müssen die Datei in Zufügen-Modus öffnen. Verwenden Sie this constructor statt:

public FileOutputStream(File file, 
       boolean append) 
       throws FileNotFoundException 

append - wenn sie wahr ist, dann wird Bytes bis zum Ende der Datei geschrieben werden statt Anfang

Der Rest scheint in Ordnung, haben Sie bereits einen neuen Linie am Ende deines Schreibens.

+0

am Ende des Writer Val, rufe ich nicht schon den Datei-Ausgangsstrom? "(neue FileOutputStream (Datei)" @ yǝsʞǝlA –

+0

ich meine: neue FileOutputStream (Datei, True) –