kscripting / kscript

Scripting enhancements for Kotlin
MIT License
2.07k stars 124 forks source link

How to load text file via relative path? #399

Open dnltsk opened 1 year ago

dnltsk commented 1 year ago

I want to open files that are located beside the main script file.

@file:Import("Models.kts")
val data = Gson().fromJson(FileReader("data.json"), Models.Data::class.java)

fails with

java.io.FileNotFoundException: data.json (No such file or directory)

Using the absolute path works straight away. Cannot find anything guidance in the documentation.

dnltsk commented 1 year ago

The sample code above is working finr when I execute the script from console like

> ./Main.kts

But not when executed from within IntelliJ, when the project was created via

> kscript --idea Main.kts

Then, it expects to find the text file inside the .../Library/Caches/kscript/idea_59... path.

aartiPl commented 1 year ago

Yes, because --idea creates IntelliJ project, which is intended for debugging, not as a runtime environment. The project is located in the cache, so you must copy the data file if you want to use it.