- Learn Kotlin Programming(Second Edition)
- Stephen Samuel Stefan Bocutiu
- 292字
- 2021-06-24 14:13:23
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.
- 工程軟件開發(fā)技術基礎
- Java面向?qū)ο筌浖_發(fā)
- MongoDB for Java Developers
- C語言程序設計基礎與實驗指導
- Dependency Injection in .NET Core 2.0
- UI智能化與前端智能化:工程技術、實現(xiàn)方法與編程思想
- Getting Started with Python Data Analysis
- 單片機C語言程序設計實訓100例
- C# Multithreaded and Parallel Programming
- Java程序設計與項目案例教程
- Getting Started with Python
- Visual C++開發(fā)寶典
- ASP.NET開發(fā)寶典
- Java Web開發(fā)基礎與案例教程
- Android嵌入式系統(tǒng)程序開發(fā)(基于Cortex-A8)