我有一个groovy的技术问题。一般来说,我创建线程(使用TimerTask),它以定义的频率读取特定文件夹中的所有文件,并检查它是否包含某些特定模式。伪代码:
def startTimer() {
new TimerTask() {
int listFilesForFolder(final File folder, int txn) throws IOException {
String file
folder.listFiles().each { final File fileEntry ->
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry)
} else {
file = fileEntry.getName()
try {
findTransactionType(folder.toString(), file, txn)
} catch (FileNotFoundException e) {
e.printStackTrace()
}
}
}
tmp = this.amount
this.amount = 0
return tmp
}
private findTransactionType(String folder, String file, int txn) {
Pattern p = Pattern.compile("paaaattteeerrrnnn")
BufferedReader r = new BufferedReader(new FileReader(folder + "\\" + file))
String line
while ((line = r.readLine()) != null) {
Matcher m = p.matcher(line)
while (m.find()) {
m = p.matcher(m.group(0))
while (m.find()) {
if (m.group(1).contains(txn.toString())) {
this.amount++
}
}
}
}
}
}, 0, interval * 1000)
}
然而,我需要为有人可以从我的文件夹中删除文件的情况做好准备。但在删除过程中我遇到了错误 - 无法访问文件,因为它已被其他程序使用。
我该如何服从?我应该怎么做才能自由删除我的groovy脚本定期运行的文件夹中的文件?
答案 0 :(得分:1)
当然是我的错; - )
我忘了关闭BufferedReader流,所以我错过了r.close()
行。祝你有愉快的一天: - )