2013-11-04 15 views
5

Ich bin neu zu groovy und SOAP UI frei. Ich verwende ein grooviges Skript, um meinen Test für SOAP UI zu steuern.Lesen und Schreiben einer Datei in groovy

Ich möchte ein Skript schreiben, das eine Datei von Personen IDs liest, entfernt die erste, legt eine Eigenschaft fest, schreibt die Datei ohne die, die ich gerade gelesen habe.

Hier ist mein erster Schnitt auf sie:

List pids = new ArrayList() 

new File("c:/dev/pids.csv").eachLine { line -> pids.add(line) } 

String pid = pids.get(0); 
testRunner.testCase.setPropertyValue("personId", pid) 
pids.remove(0) 

new File("c:/dev/pids.csv").withWriter { out -> 
    pids.each() { aPid -> 
     out.writeLine(aPid) 
    } 
} 

Die Ausgabe auf SOAP-UI angezeigt wird und die Datei nicht berührt bekommt. Ich bin verloren.

Antwort

7
ArrayList pids = null 
PrintWriter writer = null 

File f = new File("c:/temp/pids.txt") 

if (f.length() > 0){ 
    pids = new ArrayList() 

    f.eachLine { line -> pids.add(line) } 

    println("Item to be removed: " + pids.get(0)) 
    //testRunner.testCase.setPropertyValue("personId", pid) 
    pids.remove(0) 

    println pids 

    writer = new PrintWriter(f) 
    pids.each { id -> writer.println(id) } 

    writer.close() 
} 
else{ 
    println "File is empty!" 
} 
+0

Ja, das ist, was ich tun endete, nur habe ich BufferedWriter. Wenn alles andere fehlschlägt, verwenden Sie Java. :) Danke für die Antwort. – Thom

0
def myFile = new File("newfile.txt") 

def newFile = new File("newfile2.txt") 

//testRunner.testCase.setPropertyValue("personId", pid) 

PrintWriter printWriter = new PrintWriter(newFile) 

myFile.eachLine { currentLine, lineNumber -> 

    if(lineNumber > 1) 

     printWriter.println(currentLine) 
    } 

printWriter.close()