Объединяйте файлы в 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()
        }
    }
}
Другие вопросы по тегам