में एक फ़ाइल दर्ज करें मुझे आश्चर्य है कि ग्रोवी में एक फाइल को पूंछ करने का एक आसान तरीका है? मुझे पता है कि फाइल को कैसे पढ़ा जाए, लेकिन मैं एक फाइल कैसे पढ़ूं और फिर और लाइनों को जोड़ने के लिए प्रतीक्षा करें, उन्हें पढ़ें, प्रतीक्षा करें, आदि ...ग्रोवी
मेरे पास यह है कि मुझे यकीन है कि वास्तव में बेवकूफ समाधान है:
def lNum = 0
def num= 0
def numLines = 0
def myFile = new File("foo.txt")
def origNumLines = myFile.eachLine { num++ }
def precIndex = origNumLines
while (true) {
num = 0
lNum = 0
numLines = myFile.eachLine { num++ }
if (numLines > origNumLines) {
myFile.eachLine({ line ->
if (lNum > precIndex) {
println line
}
lNum++
})
}
precIndex = numLines
Thread.sleep(5000)
}
ध्यान दें कि मैं वास्तव में यूनिक्स "पूंछ" कमांड लागू में दिलचस्पी नहीं है। जब तक यह एकमात्र समाधान न हो।
class TailReader {
boolean stop = false
public void stop() {
stop = true
}
public void tail (File file, Closure c) {
def runnable = {
def reader
try {
reader = file.newReader()
reader.skip(file.length())
def line
while (!stop) {
line = reader.readLine()
if (line) {
c.call(line)
}
else {
Thread.currentThread().sleep(1000)
}
}
}
finally {
reader?.close()
}
} as Runnable
def t = new Thread(runnable)
t.start()
}
}
tail
विधि taks एक फ़ाइल और पैरामीटर के रूप में बंद:
http://stackoverflow.com/questions/557844/java-io-implementation-of-unix-linux-tail-f –