清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
//----------------------------------------------------------------------------------
println new File('/doesnotexist').exists() // => false
println new File('/doesnotexist').delete() // => false
new File('/createme') << 'Hi there'
println new File('/createme').exists() // => true
println new File('/createme').delete() // => true
names = ['file1','file2','file3']
files = names.collect{ new File(it) }
// create 2 of the files
files[0..1].each{ f -> f << f.name }
def deleteFiles(files) {
def problemFileNames = []
files.each{ f ->
if (!f.delete())
problemFileNames += f.name
}
def delCnt = files.size() - problemFileNames.size()
println "Successfully deleted $delCnt of ${files.size()} file(s)"
if (problemFileNames)
println "Problems file(s): " + problemFileNames.join(', ')
}
deleteFiles(files)
// =>
// Successfully deleted 2 of 3 file(s)
// Problems file(s): file3
// we can also set files for deletion on exit
tempFile = new File('/xxx')
assert !tempFile.exists()
tempFile << 'junk'
assert tempFile.exists()
tempFile.deleteOnExit()
assert tempFile.exists()
// To confirm this is working, run these steps multiple times in a row.
// Discussion:
// Be careful with deleteOnExit() as there is no way to cancel it.
// There are also mechanisms specifically for creating unqiuely named temp files.
// On completion of JSR 203, there will be additional methods available for
// deleting which throw exceptions with detailed error messages rather than
// just return booleans.
//----------------------------------------------------------------------------------