清华大佬耗费三个月吐血整理的几百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. //----------------------------------------------------------------------------------