Groovy脚本可以防止删除文件 - 如何遵守它?

时间:2018-02-15 13:18:41

标签: java multithreading file groovy timertask

我有一个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脚本定期运行的文件夹中的文件?

1 个答案:

答案 0 :(得分:1)

当然是我的错; - )

我忘了关闭BufferedReader流,所以我错过了r.close()行。祝你有愉快的一天: - )