官术网_书友最值得收藏!

Kotlin for scripting

Kotlin can also be run as a script. If bash or Perl is not for you, now you have an alternative.

Say you want to delete all files that are older than N given days. The following code example does just that:

    import java.io.File 
    val purgeTime = System.currentTimeMillis() - args[1].toLong() * 24  * 60 * 60 * 1000 
    val folders = File(args[0]).listFiles { file -> file.isFile } 
    folders ?.filter { 
      file -> file.lastModified() < purgeTime } 
    ?.forEach { 
      file -> println("Deleting ${file.absolutePath}") 
      file.delete() 
    } 

Create a file named delete.kts with the preceding content. Note the predefined variable args, which contains all the incoming parameters passed when it is invoked. You might wonder what the ? character is doing there. If you are familiar with the C# language and you know about nullable classes, you already know the answer. Even though you might not have come across it, I am sure you have a good idea of what it does. The character is called the safe call operator, and, as you will find out later in the book when the subject is discussed in greater length, it avoids the dreadful NullPointerException error.

The script takes two arguments—the target folder, and then the number of days, threshold. For each file it finds in the target, it will check the last time it was modified; if it is less than the computed purge time, it will delete it. The preceding script has left out error handling; we leave this to the reader as an exercise.

Now that the script is available, it can be invoked by running the following command:

$ kotlinc -script delete.kts . 5

If you copy/create files in the current folder with a last-modified timestamp older than five days, it will remove them.

主站蜘蛛池模板: 黄浦区| 宁海县| 定结县| 临潭县| 浏阳市| 富锦市| 嘉峪关市| 东乌珠穆沁旗| 襄垣县| 临沭县| 司法| 张家港市| 太湖县| 扎囊县| 房山区| 太保市| 永春县| 东方市| 囊谦县| 南通市| 日喀则市| 乳源| 巴林左旗| 乌拉特后旗| 萍乡市| 徐汇区| 安平县| 乳山市| 胶州市| 邹平县| 广丰县| 义乌市| 巨野县| 宜兰市| 桃园县| 石泉县| 潢川县| 铁岭县| 阳原县| 乌拉特中旗| 大厂|