Как сохранить файл на Mac с помощью Compose Multiplatform for Desktop

Я пытаюсь сохранить текстовый файл с журналами приложений в моем мультиплатформенном проекте компоновки на Mac, но он работает только с отладочными сборками. Распространяемая версия создает исключение во время выполнения.

Если я создам дистрибутив через gradle packageDmgи я открываю сгенерированное приложение, я получаю следующее исключение:

      java.nio.file.FileSystemException: /logs: Read-only file system

Приложение пытается создать папку относительно своего пути с именем logsгде он должен поставить txtфайл.

Если я запускаю его локально через IntelliJ IDEA, он создает файл в указанной папке, как и ожидалось.

Это код, который я запускаю:

      import java.io.FileOutputStream
import java.text.SimpleDateFormat
import java.util.*

object FileUtils {
    fun getOrCreateFile(dirName: String, fileName: String): File {
        Paths.get(dirName).createDirectories()
        val file = Paths.get(dirName, fileName)

        if (!Files.exists(file)) {
            file.createFile()
        }

        return file.toFile()
    }
}

fun saveLogsToFile(text: String) {
    val today = SimpleDateFormat("dd-M-yyyy").format(Date())
    val file = FileUtils.getOrCreateFile(
        "logs",
        "$today.txt"
    )

    FileOutputStream(file, true).bufferedWriter().use { fileWriter ->
        fileWriter.write(text + "\n")
    }
}

0 ответов

Другие вопросы по тегам