Объединяйте файлы в Compose for Desktop
Я Android-разработчик, имею опыт работы с Jetpack Compose. Теперь я пытаюсь создавать настольные приложения, поэтому я нашел этот проект Compose for Desktop . я хочу хранитьJSON
файл с моим настольным приложением, чтобы я мог прочитать файл из своего настольного приложения и показать его пользователям.
В Android я мог бы использоватьraw
илиassets
папки, но я не знаю, как это сделать в Compose for Desktop.
Если кто-то может указать мне в правильном направлении, я буду признателен.
Редактировать
Я хочу хранить не только файлы JSON, но и некоторые другие файлы, такие как HTML, поэтому мне действительно нужен способ хранения файлов в приложении.
2 ответа
Вы можете поместить любые файлы ресурсов внутрьsrc\jvmMain\resources
получить к ним доступ с помощьюuseResource
.
например читатьjson
файл как текст:
useResource("data.json") { stream ->
val textJson = stream.bufferedReader().use { it.readText() }
}
Другой способ (похожий на каталог исходных данных или ресурсов Android) — это описано в их документации .
Создайте такую структуру каталогов в корневом каталоге вашего проекта:
myProject
└─── myDirectory // Its name does not matter
├─── common // Files shipped for all platforms
├─── windows // Files shipped for windows
├─── linux // Files shipped for linux
└─── macos // Files shipped for macos
Теперь, если вы хотите, чтобы ваш файл был доступен на всех платформах, поместите его в папкуcommon/
каталог. Если вы хотите, чтобы он был доступен только в Windows, поместите его вwindows/
каталог. и так далее.
Затем в вашем проекте build.gradle.kts укажитеmyDirectory
так:
compose.desktop {
application {
// ...
nativeDistributions {
// ...
appResourcesRootDir = (rootDir.toPath() / "myDirectory").toFile()
}
}
}