Tooling and Project Concepts
Package Path Match
Package names usually mirror directories so source files are easy to locate.
package layout
A package such as `com.example.app` commonly lives under `com/example/app`.
Package Path Match
PackagePathMatch.kt
Replay: real traced execution (multi-file project)
fun main() {
val packageName = "com.example.app"
val directory = packageName.split(".").joinToString("/")
val fileName = "Main.kt"
val fullPath = "$directory/$fileName"
println("package=$packageName")
println("directory=$directory")
println("file=$fullPath")
}
fun main() {
val packageName = "org.demo.tool"
val directory = packageName.split(".").joinToString("/")
val fileName = "Main.kt"
val fullPath = "$directory/$fileName"
println("package=$packageName")
println("directory=$directory")
println("file=$fullPath")
}
packageName ← com.example.app, directory ← com/example/app, fileName ← Main.kt
1fun main() {2 val packageName→ com.example.app = "com.example.app" //@packageName="org.demo.tool"3 val directory→ com/example/app = packageNamecom.example.app.split(".").joinToString("/")4 val fileName→ Main.kt = "Main.kt"5 val fullPath→ com/example/app/Main.kt = "$directorycom/example/app/$fileNameMain.kt"67 println("package=$packageNamecom.example.app")8 println("directory=$directorycom/example/app")9 println("file=$fullPathcom/example/app/Main.kt")10}outputpackage=com.example.app directory=com/example/app file=com/example/app/Main.kt
packageName ← org.demo.tool, directory ← org/demo/tool, fileName ← Main.kt
1fun main() {2 val packageName→ org.demo.tool = "org.demo.tool"3 val directory→ org/demo/tool = packageNameorg.demo.tool.split(".").joinToString("/")4 val fileName→ Main.kt = "Main.kt"5 val fullPath→ org/demo/tool/Main.kt = "$directoryorg/demo/tool/$fileNameMain.kt"67 println("package=$packageNameorg.demo.tool")8 println("directory=$directoryorg/demo/tool")9 println("file=$fullPathorg/demo/tool/Main.kt")10}outputpackage=org.demo.tool directory=org/demo/tool file=org/demo/tool/Main.kt